比方說,我有一個按鈕..如果他們都打電話給我的IBAction,我怎麼能區分單擊和雙擊?是否有辦法知道哪個事件引發了呼叫,或者設置了不同的操作,每種事件類型都有一個?如何知道哪個事件導致了對IBAction的呼叫?
2
A
回答
3
編輯:
在可可,AFAIK,每個控制具有一種「固定」事件的它響應。要管理雙擊,您應該覆蓋方法mouseUp
或mouseDown
,您將在其中獲得有關點擊次數的信息。
- (void)mouseUp:(NSEvent*)event {
NSInteger count = [event clickCount];
<do_something_depending_on:count];
}
OLD答:
您可以定義顯示的操作選項卡在Interface Builder的控件,然後連接合適的事件類型的控制器動作關聯到同一個控制多個IBActions。看看附件中的圖片,希望它更清晰。它顯示可用於按鈕的事件。
0
如果我理解你的話,你應該爲一次點擊創建兩個不同的IBActions使用UIControlEventsTouchUpInside和兩次點擊UIControlEventsTouchDownRepeat(控件中的重複觸發事件;對於此事件,UITouch tapCount方法的值大於一個)
1
您可以ask the application for what event is currently being processed;對於鼠標點擊,這將包括click count。
請注意,即使一個按鈕可能會因鼠標點擊以外的原因而觸發其操作,例如全鍵盤訪問(聚焦按鈕並按空格鍵)或VoiceOver(將VO光標置於按鈕上並使用按動作),所以不要認爲你的行爲是響應鼠標而被調用的。
相關問題
- 1. 如何知道哪個迴音點呼叫了我的alexa服務
- 2. ASP.NET如何知道哪個按鈕導致了回傳?
- 3. jquery popup需要知道哪個元素導致事件
- 4. 如何知道這個__InstanceModificationEvent事件觸發了哪個服務?
- 5. 知道Onclick導致的事件
- 6. 如何知道哪個ace編輯器觸發了'onchange'事件?
- 7. 如何知道哪個頁面觸發了Session Start事件?
- 8. 如何知道哪個用戶生成了Firebase事件?
- 9. 如何知道哪個規則違規導致了tslint中的錯誤?
- 10. 我怎麼才能知道哪個對象導致了我的崩潰?
- 11. Javascript事件多個呼叫
- 12. 如何知道哪個用戶付了?
- 13. 爲了呼叫註冊事件
- 14. 如何知道哪個HTML元素導致垂直滾動條
- 15. 如何知道哪個實體導致SQL異常
- 16. 如何知道哪個NSArray導致異常
- 17. 如何找到哪個對象id在javascript中導致事件
- 18. 我如何知道哪些對象保留了一個對象?
- 19. 在KnownContactProperties中缺少呼叫尋呼機,任何人都知道它在哪裏?
- 20. 如何確定哪些控制window.onbeforeunload在javascript導致了事件
- 21. 來自 - (IBAction)的呼叫+(無效)方法
- 22. 呼叫管道
- 23. 克隆呼叫會導致主線程回撥被呼叫
- 24. 如何知道哪個組件觸發了一個p:ajax請求
- 25. 如何知道哪些活動導致我的onPause
- 26. 如何知道bash腳本中的哪一行導致麻煩?
- 27. 如何知道Class對象引用了哪個類?
- 28. 如何知道在C#中單擊了哪個對象?
- 29. 如何在呼叫事件發生
- 30. 如何知道哪個類叫另一個類?
爲什麼不能定義兩個不同的IBActions,如果你需要告訴哪種事件產生了這個調用? – sergio
是的..關鍵是如何?當我CTRL-拖動元素到頭文件它只是創建一個通用的動作,它不會問我的事件類型。我怎樣才能做到這一點? – luca
@luca:操作是通用設計。如果單擊和雙擊應該做不同的事情,那麼他們應該發送不同的動作消息。對於一個按鈕,雙擊它應該不會發生與點擊兩次不同的操作,這就是爲什麼它沒有單獨的雙擊操作;應該有一個雙擊動作的自定義視圖應該有一個單獨的屬性,如[table view有的](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/ NSTableView_Class /參考/#的reference.html // apple_ref/OCC/instm/NSTableView的/ setDoubleAction :)。 –