2011-05-25 52 views
3

我只需要添加一個NSDatePicker的形式,設置風格的圖形,並設置這樣的動作:NSDatePicker更改日期的方法運行兩次(Mac應用程序)

[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 
+0

我恰好具有我同樣的問題。不知道是什麼原因造成的。 – 2011-10-10 18:55:01

+0

請問你爲什麼不在IB中創建它並用圖形連接它?這個問題是否也會發生?我認爲這很有趣。 – pbx 2012-06-13 19:14:43

回答

3

這樣做是爲了解決這個問題:

- (void) awakeFromNib { 
    [datePickerControl sendActionOn:NSLeftMouseDown]; 
} 
+0

'NSLeftMouseDown'已於10.12棄用。應該使用這個'[datePicker sendActionOn:NSEventMaskLeftMouseDown];' – 2016-12-14 07:02:08

2

第一個答案不適合我的工作。我現在在斯威夫特使用:

override func awakeFromNib() { 
    self.datePicker.target = self 
    self.datePicker.action = Selector("dateSelected:") 
    let action = Int(NSEventMask.MouseExitedMask.rawValue) 
    self.datePicker.sendActionOn(action) 
} 

(但它是一個有點怪,動作是現在所謂的鼠標按下,而不是mouseUp事件,但這並不重要,現在對我來說...)

1

下面是與NSDatePicker一個斯威夫特4解決方案的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) 
    } 
} 
相關問題