Подтвердить что ты не робот

IPhone: просмотр кликов за прозрачным UIScrollView

У меня есть UIScrollView, который имеет четкий фон. Часть scrollview имеет контент, но часть не имеет (поэтому он показывает другие представления за ним). Я хотел бы иметь возможность щелкнуть UIScrollView и MKMapView позади, но только для прозрачной части UIScrollView.

Я нашел некоторый код, с которым мне трудно понять, как работать:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event])
        [self.nextResponder touchesBegan:touches withEvent:event]; 
}

Может ли кто-нибудь помочь мне задуматься о том, как перенаправить событие касания на представление, которое находится за другим видом? Могу ли я позвонить - (void) touchhesBegan: (NSSet *) касается событияEvent: (UIEvent *) от UIViewController?

4b9b3361

Ответ 1

Что мы сделали, так это подкласс 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;
    }
}

Очевидно, что этот ответ хорошо прошел его премьер, но, надеюсь, это поможет любому, кто ищет решение.

Ответ 2

В основном, это зависит от вас, чтобы определить, какие события касания вы хотите отправить другому ответчику. Если вы просто хотите переслать все события касания, просто удалите этот оператор if в отправленном вами коде, чтобы следующий ответчик получал все события касания.