繁体   English   中英

如何使用UIWebView识别单击

[英]how to recognise Single tap using UIWebView

我正在使用UIWebViewMainViewController显示pdf文件。 一次点击我想将一个新的视图加载到MainViewController

但是UIWebView不允许默认的UITouch事件

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

}

如何解决这个问题呢?

问候

UIWebView是UIScrollView的子类。 您可以使用UIScrollView 文档中定义的touchesShouldBegin:withEvent:inContentView:方法。

您需要在UIWebView自己的类中定义此方法:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view {
// DO SOMETHING
return NO;}

@皮埃尔

谢谢

我做了以下事情:

@implementation UIViewTouch

. . .

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 
{
    // DO SOMETHING
    return NO;
}

在视图控制器实现中:

-(void)viewDidLoad
{

    CGRect frame = CGRectMake(0, 0, 500, 1000);     
    UIViewTouch *viewTouch = [[UIViewTouch alloc]initWithFrame:frame];

    NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"page1" ofType:@"pdf"];  
    NSURL *url = [NSURL fileURLWithPath:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [viewTouch loadRequest:requestObj]; [self.view addSubview:viewTouch];

}

理想情况下,应将webView userInteractionEnabled设置为NO,并在作为视图控制器的Web视图之上。 我们可以使用TapGesture来加载另一个视图。

创建一个包含整个UIWebViewUIView子类。 然后,触摸网络hitTest将触发hitTest事件。 注意:除了webView之外,不要将任何东西放到容器中。

@interface myWebViewContainer : UIView
... ...
@end

然后覆盖hitTest事件:

-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    NSLog(@"Hit test %@", [event description]);
    UIView * returnView = [super hitTest:point withEvent:event];
    [delegate userDidTapWebView];// notify the delegate that UIWebView is being touched by some naughty user :P


    return  returnView;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM