Как покрытый UIControl или UIView могут узнать о событии касания, которое закончилось над ним? - PullRequest
1 голос
/ 21 августа 2009

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

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

1 Ответ

1 голос
/ 22 августа 2009

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

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

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

-(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 *) событие

...