2011-02-23 30 views
1

我有:- (無效)鼠標按下:(NSEvent *)theEvent不點火

  • myViewController.m
  • myViewController.h
  • myView.xib

在myViewController。我添加了以下內容:

- (void)mouseDown:(NSEvent *)theEvent { 
    NSLog(@"mouseDown: entered"); 
} 

當我點擊一些在視圖(myView.xib)上,我從不輸入mouseDown:方法...你知道爲什麼嗎?

非常感謝您的幫助!

回答

3

您需要在繼承自NSView(或確切地說NSResponder)的類(例如,MyView)內實現mouseDown:(NSEvent *)theEvent方法。然後將xib文件中View的類設置爲您剛創建的類。

通常,類名以大寫字母開頭。

+3

但'NSViewController' **不會從'NSResponder'繼承。真正的問題是'NSViewController'實例不會自動添加到響應者鏈中。 – 2011-02-23 22:08:23

+0

非常感謝您的回答goetz和Bavarious。我按照goetz的說法做了,效果很好。不過,它使我的代碼稍微複雜一些。 Bavarious:你能告訴我如何將我的視圖控制器添加到我的視圖的響應鏈中嗎?非常感謝 ! – 2011-02-24 11:48:43

+0

更新:如果您在10.10+上鍊接,NSViewController現在會自動將其自身添加到響應者鏈中。 – Andrew 2015-10-25 21:35:11