Получение событий прикосновения на более чем один uiview одновременно
-
14-10-2019 - |
Вопрос
У меня есть куча UIViews
сложено одно на другое (не вложенное). Я хочу, чтобы они все отреагировали на осязание, но кажется, что самый верхний вид скрывает представления под ним, не позволяя им получить события прикосновения.
Сначала я подумал, что поймаю все события прикосновения с самым верхним видом, а затем вручную позвонить
hitTest
, или же pointInside
Методы для всех основных взглядов, но я обнаружил, что оба метода как -то частные(Может быть?) и не может быть доступен.
Есть идеи, как это справиться?
Решение
Вы можете проверить, является ли прикосновение для вашего самого верхнего вида. Если это не так, вы можете вызвать тот же метод вашего надзора. Что -то вроде [Self.superview Samemethod: Sameparameter].
Ваш самый верхний вид имеет метод
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Внутри этого метода вы делаете свою логику, верно? Внутри метода вы не можете проверить, находится ли полученное прикосновение в вашем самых верхних видах с
UITouch *touch = [touches anyObject];
[touch locationInView:self];
И если это не передает его в тот же метод надзора, используя
[self.superview touchesEnded:touches withEvent:event];
Другие советы
Прикосновения отправляются в один вид. Этот вид может затем при желании пропустить их в цепочке респондентов. Если вы хотите обработать прикосновения к коллекции представлений, вы должны привести к тому, что эти события вплоть до следующего респондента и иметь общего родителя всех из них (или их контроллера представления, поскольку контроллер также является частью цепочки респондента). прикосновения.
https://developer.apple.com/library/mac/documentation/general/devpedia-cocoaapp-mosx/responder.html