在NSDatePicker中显示日期和日期
问题描述:
我正在尝试做一些看起来很简单的事情,并且很惊讶地发现任何地方都没有帮助或类似的帖子。在NSDatePicker中显示日期和日期
我想要一个NSDatePicker
,我已经安装在IB和必然属性,显示为全天和日期,像这样:
周日,2016年3月6日
我试图未落到一个NSFormatter
日期选取器单元格,它似乎没有效果。无论设置,它总是显示为:
2016年3月12日
好对付的搜索后,我开始着手建立在显示和隐藏控制的复杂序列使用NSTextfield
来显示在其位置。这个想法是NSDatePicker
将变得可见仅用于编辑。我相信这会起作用,没有理由,这似乎很麻烦。
当它不是firstResponder
时,是否可以更改NSDatePicker
上的格式?了解它需要在编辑时以默认方式显示,但我不希望它在不是firstResponder
时显示更像标签。
答
您不能更改NSDatePicker的格式。我设法在NSDatePicker之上显示一个NSTextField。它需要NSDatePicker和NSTextField的子类。将它们连接到XIB并进行测试。
@interface MyDatePicker()
@property (weak) IBOutlet NSTextField *textField;
@end
@implementation MyDatePicker
- (BOOL)becomeFirstResponder
{
self.textField.hidden = YES;
return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder
{
self.textField.hidden = NO;
return [super resignFirstResponder];
}
@end
和
@implementation MyTextField
- (NSView *)hitTest:(NSPoint)aPoint
{
return nil;
}
@end
我所做的是非常相似的,只是我发现,我已经做了很多远远不止这些。什么是文本字段上的hitTest覆盖?也许这会有所帮助。 –
此方法主要由NSWindow对象使用,以确定哪个视图应该接收鼠标按下事件。覆盖确保文本字段忽略点击。 – Willeke
我认为那是我出错的地方。我重写了textFirstFirstResponder和resignFirstResponder方法。 Ping在周围发生间歇性问题,有时还会出现问题。 –