2013-10-14 72 views
0

我有兩個自定義UIControls。這些是滾動輪。重疊的UIControls

它們的幀重疊。在屏幕截圖上,左上方的那個位於右側的後面。在重疊區域內觸摸開始時,我如何才能從左側開始追蹤?

我beginTrackingWithTouch看起來是這樣的:

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { 
if (!insideCircle) return NO; } // pseudo-code 

如何事件被傳播到響應沒有UIControls背後有何看法?

overlapping frames

回答

3

我的建議是:
1)子類的UIView你的車輪,例如WheelView;
2)覆蓋-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
例如:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event 
{ 
    CGFloat xOffset = (point.x - self.bounds.size.width/2); 
    CGFloat yOffset = (point.y - self.bounds.size.height/2); 
    CGFloat distanceSqr = xOffset * xOffset + yOffset * yOffset; 
    if (distanceSqr > radius * radius) 
    { 
     // touch point is outside of circle 
     return NO; 
    } 
    return YES; 
} 

所以,當你將返回NO,一碰就會被傳播到下一個視圖,這是 「下面」。然而,當您的圈子重疊時,這不會起作用 - 只有在框架出現時,纔會顯示在屏幕截圖上。

+0

沒關係。圓圈不會重疊 – alecail

+0

同意。 OP應該接受這個答案。 –

+0

@Vrol我可以抽出時間來測試它嗎? – alecail