我試圖發光觸摸視圖,並在觸摸結束時取消它。在做這件事時,我注意到當我從視圖中擡起手指時,- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
方法不被調用,而是在視圖上調用- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
方法。這是一種正常的行爲?我認爲touchesCancelled
是因爲系統問題(如低內存警告)而被取消時被調用的。我通過使用touchesCancelled做了我的工作,但我想知道爲什麼它沒有正確地呼叫touchesEnded
。這是一個錯誤嗎?touchescancelled被調用,而不是touchesended
1
A
回答
2
當您觸摸該視圖並擡起手指時,不應拖動手指。如果你這樣做,那麼touchesCancelled:
方法將被調用。所以我認爲你的觀點太小而無法觸及。如果是的話,然後做一個大視圖,然後再試一次。它會爲你工作。
認爲這是一個comment
..
0
看起來touchesCancelled被調用,而不是touchesEnded如果觸摸沒有在第一秒足夠遠動左右就開始了。如果我做出一個小而快的動作,觸動取消動作會發射,因爲總動作不夠大;如果我慢慢做出一個小動作,在動作完成之前觸動取消動作將會觸發,因爲iOS放棄等待看看我是否會進一步移動。顯然,iOS正在對移動是多麼「重要」做出判斷,並將小動作視爲取消觸摸。
如果有幫助,您可以簡單地從touchesCancelled調用touchesEnded。但是在移動速度很快的情況下,直到超時時間纔會調用它,所以在移動實際結束和觸發取消時間之間可能存在延遲。順便說一句,我也注意到,如果你做一個小而快的動作,然後擡起你的手指,然後開始另一個動作,在觸發取消之前被觸發,這不被認爲是一個新的動作,並touchesBegan不會開火。這使我的應用程序中的手寫功能變得複雜,因爲手寫都是關於小而快的移動。
相關問題
- 1. touchesEnded或touchesCancelled並不總是叫
- 2. touchesEnded不被認可
- 3. TouchesEnded未被調用第二次
- 4. onCreate()方法被調用,而不是onNewIntent()
- 5. 索引被調用而不是顯示
- 6. 原函數被調用而不是stub
- 7. Android:onCreate()被多次調用(而不是我)
- 8. Android IntentService onDestroy被調用而不是onHandleIntent
- 9. 調試touchesEnded僅在單向滑動時未被調用
- 10. 當第二次呈現場景時SKScene touchesEnded未被調用
- 11. 調用touchesEnded:當點擊但未被滑動
- 12. touchesEnded在與UIButton結合時沒有被調用?
- 13. touchesEnded在表格滾動時未被調用
- 14. 模擬類函數被調用,而不是被嘲笑
- 15. 爲什麼_CxxUnhandledExceptionFilter被調用而不是被catch(...)捕獲(...)
- 16. touchesEnded不被稱爲?或隨機被稱爲
- 17. touchesEnded
- 18. 骨幹事件回調被綁定時調用,而不是被觸發
- 19. TouchesEnded檢測到,但不是的touchesBegan
- 20. activity.on不總是被調用
- 21. 調用,而不是的newInstance
- 22. Laravel調用,而不是@Destroy
- 23. Android requestFeature()必須被調用,而不是Dialog
- 24. Superview的UILongPressGestureRecognizer被調用而不是子視圖
- 25. 部分視圖HttpPost被調用而不是HttpGet
- 26. AFNetworking響應失敗塊被調用而不是成功塊
- 27. 角指令:編譯被調用,而不是鏈接
- 28. Rails顯示操作被調用而不是更新操作
- 29. 創建被調用類的新實例而不是父類
- 30. 基本方法被調用,而不是派生方法
這不是正常行爲。我懷疑這是一個錯誤。答案完全取決於你的項目。沒有人可以在沒有看到所有相關代碼部分的情況下開始猜測。 – borrrden 2012-04-26 03:09:40