Как базовый вид может узнать, не коснулся ли его прямоугольник, прямо или косвенно? - PullRequest
2 голосов
/ 20 июля 2009

У меня есть UIView, который прозрачен и покрывает почти весь экран. Я оставил 50 пикселей вверху. Это дочерний элемент представления View Controller.

Под UIView есть MyView, который наследуется от UIView, который соответствует размеру экрана. И внутри этого класса MyView, я прошу коснуться его очень просто с этим:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];

    if ([touch view] == self) {
        NSLog(@"MyView touched");
    }
}

Теперь забавно, конечно, что, если пользователь касается прозрачного UIView, который покрывает этот MyView, я не получаю «MyView touch» в консоли. Но когда пользователь касается маленькой незакрытой области MyView в верхней части экрана, то появляется касание.

Это логично для меня, потому что я прошу [touch view] == self. Но что, если я хотел бы знать, что прямоугольная область этого MyView была затронута (неважно, косвенный или прямой)?

Есть ли способ уловить любое прикосновение, которое появляется на экране / окне, а затем просто проверить, соответствует ли оно прямоугольной области вида?

1 Ответ

2 голосов
/ 20 июля 2009

Вам следует изучить раздел Руководства по программированию приложений iPhone на Сенсорные события , чтобы найти фон, который вы ищете. Концепция, которую вы хотите освоить, - это цепочка респондента, поэтому также просмотрите ссылку на UIResponder, чтобы понять, что она делает. Вы определенно можете делать все, о чем говорите, а полное обсуждение приведено в ссылке выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...