2016-03-06 6 views
2

Я пытаюсь сделать что-то, что казалось бы очень простым и удивительным, чтобы найти какую-либо помощь или подобные публикации в любом месте.Показать день и дату в NSDatePicker

Я хочу NSDatePicker, что у меня есть настройки в IB и связанные с собственностью, чтобы показать, как полный рабочий день и дату, как так:

Воскресенья, 6 марта 2016

Я попытался сбросив NSFormatter на Дата Picker Cell, похоже, не имеет никакого эффекта. Независимо от настроек, он всегда отображается как:

3/12/2016

После изрядных поисков, я собираюсь создать сложную последовательность отображения и скрытия элемента управления, чтобы использовать NSTextfield к отображать на своем месте. Идея состоит в том, что NSDatePicker станет видимым только для редактирования. Я уверен, что это сработает, это просто кажется такой большой проблемой без причины.

Возможно ли изменить форматирование на NSDatePicker, если это не firstResponder? Понимая, что он должен отображаться по умолчанию при редактировании, я просто хочу, чтобы он отображался больше как метка, а не firstResponder.

ответ

1

Вы не можете изменить форматирование NSDatePicker. Мне удалось отобразить NSTextField поверх NSDatePicker. Для этого требуются подклассы 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

Я думаю, что именно там я поступил не так. Я переопределял текстовое поле getFirstResponder и методы resignFirstResponder. Пинг-понг вокруг с периодическими и иногда проблематичными проблемами. –