2013-10-14 3 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) Override -(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

Смежные вопросы