2010-03-19 38 views
7

標題或多或少地說明了一切。爲了迴應touchesBegan事件,我的UIViewController重新上色並添加了一些子視圖。它不會收到touchesEnded。我猜是因爲添加的子視圖會以某種方式攔截事件。我試圖在子視圖上調用resignFirstResponder無濟於事。添加子視圖後未收到touches已刪除/已移動/已取消

當我不添加子視圖和觸摸事件被正常調用時,代碼工作正常。

任何想法?

謝謝

編輯:細節和我如何修復它。

基本上我有一個子視圖的主視圖,當我觸摸子視圖時,事件會傳遞到主視圖,但是,在這個事件中,我刪除了子視圖並在它們的位置添加了新子視圖。觸摸起源於不再存在的子視圖意味着觸摸的其餘部分丟失。

我解決了這個問題通過重寫則hitTest:withEvent在我的母版視圖,停止觸摸有朝一日能兌子視圖

+2

任何代碼? +++++ – kennytm 2010-03-22 14:20:10

+0

嗯,代碼是相當複雜的,但我編寫了一個最簡單的例子來張貼在這裏,它的工作正常...所以+1在正確的方向微調...... ........會發布時,我已經找出了差異 – Sam 2010-03-22 15:48:56

回答

8

你嘗試將它作爲一個子視圖之前設置userInteractionEnabled屬性不爲子視圖?

+0

不,這聽起來很有希望,會嘗試... – Sam 2010-03-25 16:34:39

+0

也許某些子視圖通過實現不合格的-touchesEnded:withEvent消耗該事件? – ZhangChn 2011-09-06 07:14:06

1

你將需要通過從子視圖觸摸到使用像這樣的測試上海華:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    [super touchesBegan:touches withEvent:event]; 
} 
+0

子視圖也沒有收到事件。如果我將子視圖添加到touchesBegan事件發生的位置,子視圖和超級視圖都不會接收touchesMoved/Canceled/Ended – Sam 2010-03-22 09:41:27

+3

這會將觸摸傳遞給superCLASS,而不是superVIEW。 ;) – Pascal 2010-03-25 15:57:52

相關問題