Получение событий прикосновения на более чем один uiview одновременно

StackOverflow https://stackoverflow.com/questions/4585007

Вопрос

У меня есть куча 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top