UIWebView частично работоспособен


У меня очень странная проблема с UIWebView:
В моем приложении есть функция, которая открывает UIWebView, чтобы показать мою политику конфиденциальности. Функция вызывается дважды из двух разных представлений. Один раз, если пользователь нажимает кнопку на экране входа в систему, и один раз, если пользователь нажимает кнопку в представлении, которое находится поверх представления карты Google.
Когда функция вызывается из представления входа в систему, все работает нормально, и я может, но когда функция вызывается из другого представления, UIWebView появляется, но не полностью работоспособен (для тестирования я загружаю google.com):
Я не могу прокручивать и не могу открыть большинство ссылок, единственные элементы , которые реагируют на сенсорные события, отмечены на этом рисунке:

Снимок экрана

И вот мой код: в моем appdelegate у меня есть:

- (void)showPrivacy:(UIView *)view
{
    overlay = [[UIView alloc] initWithFrame:view.frame];
    overlay.backgroundColor = [UIColor blackColor];
    overlay.alpha = 0;
    [view addSubview:overlay];

    privacyView = [[WPPrivacyView alloc] initWithFrame:CGRectMake(15, 40, view.frame.size.width-30, view.frame.size.height-75)];
    privacyView.layer.shadowColor = [UIColor blackColor].CGColor;
    privacyView.layer.shadowOffset = CGSizeMake(0, 1);
    privacyView.layer.shadowOpacity = 0.75;
    privacyView.layer.shadowRadius = 20.0f;
    privacyView.userInteractionEnabled = YES;
    privacyView.scrollView.scrollEnabled = YES;
    privacyView.scrollView.bounces = NO;
    privacyView.scalesPageToFit = YES;
    [view addSubview:privacyView];

    [UIView animateWithDuration:0.1 animations:^{
        privacyView.alpha = 1;
    }];

    privacyView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.1, 0.1);

    CAKeyframeAnimation *bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
    bounceAnimation.values = [NSArray arrayWithObjects:
                          [NSNumber numberWithFloat:0.1],
                          [NSNumber numberWithFloat:1.1],
                          [NSNumber numberWithFloat:0.95],
                          [NSNumber numberWithFloat:1.0], nil
                          ];

    bounceAnimation.duration = 0.3;
    bounceAnimation.removedOnCompletion = NO;
    [privacyView.layer addAnimation:bounceAnimation forKey:@"bounce"];

    privacyView.layer.transform = CATransform3DIdentity;
}

Чтобы скрыть представление, я вызываю: - (void) hidePrivacy {[UIView animateWithDuration: анимация 0.3: ^ {privacyView.alpha = 0; privacyView.transform = CGAffineTransformScale (CGAffineTransformIdentity, 0,1, 0,1); } завершение: ^ (BOOL завершен) {[privacyView removeFromSuperview]; }]; } Функция showPrivacy вызывается из представления входа в систему и из представления карты следующим образом:

WPAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
[appDelegate showPrivacy:self.view];

Итак, почему все работает нормально, когда веб-просмотр отображается в представлении входа в систему, и почему я могу управлять НЕКОТОРЫМИ элементами, но не всеми, когда он отображается в представлении карты?


person Alexander Scholz    schedule 28.07.2013    source источник


Ответы (1)


Потому что вы добавляете свое представление наложения в качестве подпредставления. Это означает, что супервизор будет участвовать во взаимодействии с пользователем, и некоторые события будут «украдены» или заблокированы. В частности, прокрутка, при которой используются распознаватели жестов.

Возможно, вы захотите изменить свой дизайн, чтобы вы представляли контроллер модального представления с вашим наложением. Если вы хотите, чтобы фон был исходным видом, вы можете захватить его изображение перед тем, как представить модальное окно.

person Wain    schedule 28.07.2013