iPhone: щелкните вид за прозрачным UIScrollView
У меня есть UIScrollView, который имеет четкий фон. Часть прокрутки имеет контент, а часть - нет (поэтому за ним отображаются другие виды). Я хотел бы иметь возможность щелкать через UIScrollView и MKMapView позади, но только для прозрачной части UIScrollView.
Я нашел некоторый код, который мне очень трудно понять, как начать работать:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event])
[self.nextResponder touchesBegan:touches withEvent:event];
}
Может ли кто-нибудь помочь мне обдумать, как переслать сенсорное событие в представление, которое находится за другим представлением? Могу ли я вызвать - (void)touchesBegan:(NSSet *) касается события EventEvent:(UIEvent *) из UIViewController?
2 ответа
Мы создали подкласс UIScrollView и внедрили логику, которая передает ответственность до представлений под ним, если касание происходит внутри прозрачной области.
В нашем случае прозрачная область определяется значением contentOffset, равным 120 по оси Y, что означает, что наш контент начинается на 120 точек ниже начала UIScrollView, и код выглядит следующим образом:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if (self.contentOffset.y < 0 && point.y < 0.0) {
return NO;
} else {
return YES;
}
}
Очевидно, что этот ответ далеко позади своего пика, но, надеюсь, это полезно для любого, кто ищет решение.
По сути, вам решать, какие события касания вы хотите переслать другому респонденту. Если вы просто хотите переслать все сенсорные события, просто удалите это if
заявление в коде вы разместили, чтобы следующий респондент получал все сенсорные события.