xcode NSDatePicker更改日期方法运行两次!(mac应用程序)

dluptydi  于 2022-12-14  发布在  Mac
关注(0)|答案(3)|浏览(132)

我只向窗体添加一个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
kzipqqlq

kzipqqlq1#

请执行以下操作来修复此问题:

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

qnyhuwrf2#

第一个答案对我不起作用。我现在在Swift中使用这个答案:

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

(But这有点奇怪,现在是在mouseDown而不是mouseUp上调用该操作,但现在这对我来说无关紧要...)

ux6nzvsh

ux6nzvsh3#

下面是一个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)
  }
}

相关问题