2016-03-06 132 views
2

我正在尝试做一些看起来很简单的事情,并且很惊讶地发现任何地方都没有帮助或类似的帖子。在NSDatePicker中显示日期和日期

我想要一个NSDatePicker,我已经安装在IB和必然属性,显示为全天和日期,像这样:

周日,2016年3月6日

我试图未落到一个NSFormatter日期选取器单元格,它似乎没有效果。无论设置,它总是显示为:

2016年3月12日

好对付的搜索后,我开始着手建立在显示和隐藏控制的复杂序列使用NSTextfield来显示在其位置。这个想法是NSDatePicker将变得可见仅用于编辑。我相信这会起作用,没有理由,这似乎很麻烦。

当它不是firstResponder时,是否可以更改NSDatePicker上的格式?了解它需要在编辑时以默认方式显示,但我不希望它在不是firstResponder时显示更像标签。

回答

1

您不能更改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 
+0

我所做的是非常相似的,只是我发现,我已经做了很多远远不止这些。什么是文本字段上的hitTest覆盖?也许这会有所帮助。 –

+0

此方法主要由NSWindow对象使用,以确定哪个视图应该接收鼠标按下事件。覆盖确保文本字段忽略点击。 – Willeke

+0

我认为那是我出错的地方。我重写了textFirstFirstResponder和resignFirstResponder方法。 Ping在周围发生间歇性问题,有时还会出现问题。 –