2009-07-23 71 views
5

鑑於我的一個UIViews的某種狀態,我希望它對touchesBegan作出響應,然後取消從該特定touchesBegan事件繼續進行的任何進一步的touchesMoved/Ended。touchesBegan後,您可以強制觸摸事件取消嗎?

基本上我有一個休息的UIView子類,如果它被觸動,我想移動一些其他的UIViews ...然後下一次它被觸動的響應者鏈可以正常響應touchesMoved/Ended .. 。

是的,我可以在touchesMoved檢查這種狀態/結束,但我不知道是否有一種方法,只是破壞該觸摸事件中期階段。

回答

-2

據我所知,UIScrollView的是能夠取消觸摸。所以我想有一些方法可以做到這一點。對不起,我無法提供更精確的解決方案。

0

我還沒有嘗試過,但我採取的猜測。

第一響應是觸摸事件的當前收件人。因此,作爲第一響應者的辭職應該阻止更多的觸碰事件進入。新的觸碰將設置新的第一響應者。

[self resignFirstResponder]; 
+0

都能跟得上。不起作用。 touchesMoved&touchesEnded仍然被稱爲... – Meltemi 2009-11-24 20:37:11

+0

受過教育的猜測是好的,OP做測試的工作是好的,沒有迴應結果,並刪除或修復您的答案-1 – 2011-12-23 21:00:02

0

假設你有一個觸摸,觸摸對象始終是相同的,這意味着(你可以比較使用==

UITouch *anyTouch = [touches anyObject]; 
if (anyTouch != self.lastTouch) 
    return; 

所以,在你的UIView子存儲最後UITouch的例子我使用名爲lastTouch的房產),您可以計算出您想要忽略哪些接觸,以及您想要在移動和結束/取消時識別哪些接觸。不夠優雅,不那麼直接,但它可以讓你得到你想要的東西。

這可以針對多點觸摸進行擴展,當然。

1
let fakeTouch:Set<NSObject> = [UITouch()] 
    let event  = UIEvent() 

    self.touchesEnded(fakeTouch, withEvent: event)