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

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

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

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 *)

Другие вопросы по тегам