Принудительное касание к нескольким представлениям

У меня есть два перекрывающихся пользовательских представления, которые должны получать события касания (например, touchesBegan и touchesMoved). Однако я могу получить только одно из представлений (верхнее) для получения событий. Я попытался перенаправить события из одного представления в другое, используя:

[otherView touchesEnded: касания с событием: событие];

но это не всегда работает.

Мне нужно, чтобы события касания отправлялись в два представления одновременно. Кто-нибудь может помочь?


person Wayne Shelley    schedule 07.06.2011    source источник
comment
Вы также пересылаете touchesBegan и другие методы, связанные с касанием, которые вы перехватывали? Ты звонил супер?   -  person coneybeare    schedule 07.06.2011
comment
как ты имеешь ввиду позвонить супер?   -  person Wayne Shelley    schedule 08.06.2011
comment
Вместо [otherView touchesEnded:touches withEvent:event]; используйте [super touchesEnded: касания с событием: событие];   -  person joshholat    schedule 08.06.2011


Ответы (1)


Если вы перехватываете прикосновение, вам обычно следует вызывать [super methodYouAreIntercepting] в конце метода, если вы все еще хотите, чтобы прикосновение прошло к следующему слою. Если вы сделаете это, и два представления будут находиться непосредственно друг над другом, вам не нужно вручную перенаправлять касания, как вы делали это раньше. поскольку ваш комментарий выше предполагает, что вы не вызывали super в методе, держу пари, это решит вашу проблему.

person coneybeare    schedule 07.06.2011
comment
РЕШЕНО: я использовал self.nextResponder, который делал то же самое, что и вызов super. Однако я сделал косяк с копированием и вставкой. По сути, я перенаправлял все касания Begand, Ended, Moved и т. д. в функцию touchesBegan. Теперь он работает отлично. Спасибо. - person Wayne Shelley; 08.06.2011
comment
Вызов [super touchesBegan:withEvent:] не работает. Если бы это было так, старый простой UIView по умолчанию пропускал бы события касания, чего не происходит. - person Karl; 23.07.2011