我有一個點擊手勢識別器的視圖。該視圖的子視圖是我的自定義類的一個實例,它從UIControl繼承。我有一個問題,UIControl子類有時會允許觸摸事件通過父視圖時,它不應該。UIControl endTrackingWithTouch不叫
內UIControl子類,我已重寫這些函數(代碼是在斯威夫特)
override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool
{
return true
}
override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool
{
// The code here moves this UIControl so its center is at the touchpoint
return true
}
override func endTrackingWithTouch(touch: UITouch,withEvent event: UIEvent)
{
// Something important happens here!
}
這個系統如果用戶在UIControl內着陸時工作得很好,在都 X周圍拖動控制和Y方向,然後升起屏幕。在這種情況下,所有這三個函數都被調用,並且發生了「重要的事情」。
但是,如果用戶用UIControl觸摸,在X方向上拖動控件只有,然後擡起屏幕,我們有問題。前兩個函數被調用,但是當觸點脫離屏幕時,會調用輕擊手勢識別器,並且不會調用endTrackingWithTouch。
我如何確保始終調用endTrackingWithTouch?
很好的答案。有時您可以使用手勢的代表方法而不是禁用手勢: 可選的func gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer, shouldReceiveTouch touch:UITouch) - > Bool – viggio24 2015-09-01 12:22:39
如果您實現自己的TapGestureRecognizer並將其添加到控件中,任何超級觀點之前都會點擊。這樣您就不需要了解視圖層次結構中其他識別器的任何信息。以下詳情... – 2017-03-26 00:23:51