iPhone: щелкните вид за прозрачным UIScrollView - PullRequest
13 голосов
/ 09 февраля 2011

У меня есть 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 *) затрагивает событиеEE:: (UIEvent *) из UIViewController?

Ответы [ 2 ]

9 голосов
/ 15 марта 2013

Мы создали подкласс 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;
    }
}

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

3 голосов
/ 19 февраля 2011

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

...