2013-04-12 64 views
1

我有兩個自定義UIViews(分別爲A和B),每個UIView都有一個設置爲相同來源和相同大小的框架。它們都作爲子視圖添加到父UIView(C)。UIView subview touch forward

我有一個觸摸識別器作爲A和B的一部分,用於偵聽某些點上的觸摸。如果接收到該觸摸,它會引發一個代表,直至父UIView表示已被觸摸。問題是,因爲B在A之後被添加,所以B從未接收到觸摸事件。

A和B UIViews是帶有端點的單行。他們都認識到了端點的觸動,並提出了委託通知。如何添加子視圖並通過頂層的父視圖識別它們?這就像一個排他性的東西。

+0

這有幫助嗎? http://stackoverflow.com/questions/1207287/whats-the-trick-to-pass-an-event-to-the-next-responder-in-the-responder-chain – fguchelaar

回答

1

如果A被接收觸摸事件和B不是,雖然他們的C兩個孩子,則是因爲一個聲稱所有觸摸事件本身,包括那些用於B.

的解決方案是覆蓋pointInside:withEvent:方法中量級的方法來確定它是否應該接受的事件本身,就像這樣:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    if ([self pointIsInHotspot:point]) return YES; 
    return NO; 
} 

哪裏pointIsInHotspot是你所需要的任何測試,以確定執行如果點上視圖內的活動區域。

0

將您的手勢識別器中的cancelsTouchesInView設置爲NO。