NSDatePicker 更改日期方法运行两次!(mac app)

发布于 2024-11-09 17:32:40 字数 457 浏览 0 评论 0原文

我只是在表单中添加一个 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

I just add one NSDatePicker to the form, set the style graphical, and set the action like this:

[datePicker setAction:@selector(datePickSelected:)];

in the method, it just prints out the selected date.

-(void)datePickSelected:(id)sender
{
    NSLog(@"%@",[datePicker dateValue]);
}

It works, but runs two times when you click the date in this datepicker. Why is this?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

煞人兵器 2024-11-16 17:32:40

执行此操作可以解决此问题:

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

Do this to fix this:

- (void) awakeFromNib {
  [datePickerControl sendActionOn:NSLeftMouseDown];  
}
献世佛 2024-11-16 17:32:40

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

Here's a Swift 4 solution with the NSDatePicker inside an 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)
  }
}
单身狗的梦 2024-11-16 17:32:40

第一个答案对我不起作用。我现在在 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 上调用该操作,但这对我来说现在并不重要......)

The first answer doesn't work for me. I use this now in Swift:

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

(But it's a little bit strange, the action is now called on mouseDown instead of mouseUp, but that doesn't matter for me now...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文