У меня есть 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 была затронута (неважно, косвенный или прямой)?
Есть ли способ уловить любое прикосновение, которое появляется на экране / окне, а затем просто проверить, соответствует ли оно прямоугольной области вида?