NSDatePicker метод изменения даты запускается дважды! (Mac App)
Я просто добавляю один NSDatePicker в форму, устанавливаю графический стиль и устанавливаю действие следующим образом:
[datePicker setAction:@selector(datePickSelected:)];
в методе он просто печатает выбранную дату.
-(void)datePickSelected:(id)sender
{
NSLog(@"%@",[datePicker dateValue]);
}
Это работает, но запускается два раза, когда вы нажимаете на дату в этом указателе даты. Почему это?
2011-05-25 15:17:09.382 xxx[6609:a0f] 2011-05-13 15:17:04 +0800
2011-05-25 15:17:09.677 xxx[6609:a0f] 2011-05-13 15:17:04 +0800
3 ответа
Вот решение Swift 4 с NSDatePicker
внутри NSViewController
:
class DatePickerVC: NSViewController{
@IBOutlet weak var datePicker: NSDatePicker!
var date:Date!
override func viewDidLoad() {
super.viewDidLoad()
self.datePicker.target = self
self.datePicker.action = #selector(dateSelected)
let action = NSEvent.EventTypeMask.mouseExited
self.datePicker.sendAction(on: action)
}
@objc func dateSelected(){
print(datePicker.dateValue)
}
}
Сделайте это, чтобы исправить это:
- (void) awakeFromNib {
[datePickerControl sendActionOn:NSLeftMouseDown];
}
Первый ответ не работает для меня. Я использую это сейчас в Swift:
override func awakeFromNib() {
self.datePicker.target = self
self.datePicker.action = Selector("dateSelected:")
let action = Int(NSEventMask.MouseExitedMask.rawValue)
self.datePicker.sendActionOn(action)
}
(Но это немного странно, теперь действие вызывается для mouseDown, а не mouseUp, но сейчас это не имеет значения для меня...)