簡體   English   中英

如何取消touchesMoved:withEvent:

[英]How to cancel touchesMoved:withEvent:

我有一個關於觸摸視圖的查詢:

我有一個父視圖(框架是(0,0,768,1024)),它包含兩個子視圖(A和B),一個框架(0,0,512,768)帶有標簽100和B框架(512,0,512,768)帶有標簽200。

我實現了觸摸方法touchesBegan:withEvent: touchesMoved:withEvent: touchesEnded:withEvent:

當我開始從 A 觸摸到 B 時touchesBegantouchesMoved方法按預期被觸發

我需要實現:當觸摸從 A 到達 B 時,A 的 touchesEnded 應該被觸發,B 的觸摸開始被觸發,反之亦然。我在各自的方法中有自己的邏輯。有人可以建議如何實現相同的目標。

這是故意的行為。 通常,如果您觸摸“取消”按鈕,並且您的手指在抬起時滑到“刪除”按鈕上,您不想意外刪除某些內容。

但是,我遇到過這樣的情況,我確實希望觸摸像這樣傳遞。 與@ejazz 非常相似,我將工作移至包含 A 和 B 的視圖。這啟用了用戶交互,並實現了touchesBegantouchesMovedtouchesEnded

當觸摸在子視圖上移動時,它會發送適當的消息。 我只是打開和關閉子視圖,但如果需要,您應該可以在適當的子視圖上調用touchesBegantouchesMovedtouchesEnded 如果您需要知道觸摸何時開始和結束,您將需要跟蹤與每個觸摸關聯的先前視圖 - 或者只調用其previousLocationInView:方法。

我建議使用UIPanGestureRecognizer class。將其附加到父視圖,設置委托。

您現在可以關注狀態和位置。 因此,當 state 是UIGestureRecognizerStateBegan時,檢查位置是在 A 還是 B,當 state 是UIGestureRecognizerStateEnded時,檢查位置是在 B 還是 A。

您可以檢查點擊視圖是否包含 A 或 B 視圖

CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)

然后使用 view.frame

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM