[英]how to recognise Single tap using UIWebView
我正在使用UIWebView
在MainViewController
显示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来加载另一个视图。
创建一个包含整个UIWebView
的UIView
子类。 然后,触摸网络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.