2013-03-16 61 views
4

滾動型是有一些子視圖....
滾動型包含其預定義手勢(Pan)和我的自定義手勢(潘),以及同時確認它...
子視圖中還含有自定義平移手勢......
一切都工作正常,除了在SubViews上的平移手勢...
當我在做SubView的時候,它的SuperView也得到了接觸和處理,我不想...
當在子視圖上進行平移時,superView不應該識別它們...
如何阻止傳遞我的子視圖手勢到它的SuperView?塊傳遞手勢上海華

回答

0

基本上,當你點擊子視圖,然後超視圖手勢無法識別,因爲你的超視圖與子視圖重疊。在.H

添加委託,並把它送給tapGestures和給予這樣

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if([gestureRecognizer.view isKindOfClass:[superView class]]) 
     return NO; 
    else 
     return YES; 
} 
+0

是的,這是假設發生的......但在這種情況下,它不會發生......當我刪除超視圖的同時手勢識別,然後它按預期工作.....任何想法可能是什麼? – bhawesh 2013-03-16 10:08:45

+0

因爲你有條件並檢查來自superview的那一個然後什麼都不做。 – Balu 2013-03-16 10:12:32

+0

一旦檢查我的更新答案。 – Balu 2013-03-16 10:27:27

9

條件要從響應手勢,當有觸摸點下子視圖可爲已完成方框上海華如下:

實施UIGestureDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; 

下列方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return (touch.view == superView); 
} 

並將此代理設置爲指派給superView的gestureRecognizer。

我希望這應該做的需要。

+1

對我來說,我不得不在子視圖中勾選「啓用用戶交互」,以使其工作,但它確實如此。 – Dan 2013-12-21 16:05:10