Как покрытый 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 *)