Как закрытый UIControl или UIView может знать о событии касания, которое закончилось над ним?

У меня есть UIControl (или UIView, неважно какой), и это покрывается другим UIControl. Другой UIControl хорошо реагирует на сенсорные события. Однако базовый UIControl также должен знать о касании и о том, было ли оно на самом деле «на нем» или нет с точки зрения пользователя. Покрытие UIControl частично прозрачно.

Как я могу поймать это прикосновение к базовому UIControl?


person Community    schedule 21.08.2009    source источник


Ответы (1)


Я думаю, что есть несколько способов сделать это...

Вы можете передать событие касания другому элементу управления... хотя я не думаю, что это сработает, если вы перемещаете верхний вид поверх другого? Возможно, вам придется поэкспериментировать.

Более простой способ — просто посмотреть, содержит ли нижний прямоугольник точку касания:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];
    if (CGRectContainsPoint(lowerView.frame, touchLocation)) {
        <doyourthing>
}

Я не помню навскидку, но вам может понадобиться преобразовать координаты вида между двумя видами?!? или вы можете задать само представление с помощью - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

person Meltemi    schedule 21.08.2009