UIWebView支持点击事件,实现全屏功能

在UIWebView上加手势

View Code
1 UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self
2                                                                                 action:@selector(handleSingleTap:)];
3     [self.view addGestureRecognizer:singleTap];
4     singleTap.delegate = self;
5     singleTap.cancelsTouchesInView = NO;
6     [singleTap release];

对手势动作进行处理实现全屏

View Code
- (void)handleSingleTap:(id)sender
{
    if (!isFullScreen) {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [self.navigationController setToolbarHidden:YES animated:YES];
        isFullScreen = YES;
    } else {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
        [self.navigationController setNavigationBarHidden:NO animated:YES];
        [self.navigationController setToolbarHidden:NO animated:YES];
        isFullScreen = NO;
    }
}

关键是需要加上手势的代理

View Code
// called when the recognition of one of gestureRecognizer or otherGestureRecognizer would be blocked by the other
// return YES to allow both to recognize simultaneously. the default implementation returns NO (by default no two gestures can be recognized simultaneously)
//
// note: returning YES is guaranteed to allow simultaneous recognition. returning NO is not guaranteed to prevent simultaneous recognition, as the other gesture's delegate may return YES

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

因为UIWebView上的touches,move事件会被其scrollView捕获,此代理允许了两个事件可以同时发生。

当然也可以使用JS实现在UIWebView上的点击事件~

posted @ 2013-03-11 15:27  Lawerence  阅读(256)  评论(0编辑  收藏  举报