當觸摸在webview外部結束時,「onTouchEnd」不會觸發。 編譯了XCode 6,IOS 8,iPhone 6IOS - 沒有全屏webview的「touchend」事件
我有一個佈局:
|Navigation TAB|
|Left view|Web view|Right view|
|page view|
我可以接收所有觸摸事件,觸摸開始和結束時,在Web視圖。 但是,如果我在webview中開始觸摸,然後將觸摸移動到其外面,那麼只要我離開webview邊界,就會停止接收touchmove事件,並且不會收到觸發事件。
代碼FOT測試HTML文件:
「的viewDidLoad」 功能[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.webView = [[UIWebView alloc] initWithFrame:self.mainView.bounds];
[self.webView setScalesPageToFit:YES];
[self.webView setAlpha:1];
/* Disable scrolling of web view */
for (id subview in [self.webView subviews]) {
if ([subview isKindOfClass:[UIScrollView class]]) {
((UIScrollView*)subview).bounces = NO;
}
}
self.webView.scrollView.bounces = NO;
self.webView.scrollView.canCancelContentTouches = NO;
self.webView.scrollView.scrollEnabled = NO;
self.webView.backgroundColor = [UIColor magentaColor]; //[UIColor colorWithRed:(45.0/255.0) green:(50.0/255.0) blue:(53.0/255.0) alpha:1];
self.webView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin| UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self.mainView addSubview:self.webView];
NSString * localHtmlFilePath = [[NSBundle mainBundle] pathForResource:@"main" ofType:@"html" inDirectory:@"www"];
NSString *html = [NSString stringWithContentsOfFile:localHtmlFilePath encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:html baseURL:nil];
的
<head>
</head>
<body bgcolor="#CC6"
ontouchmove="console.info('move');"
ontouchstart="console.info('start');"
ontouchend="console.info('end');"
ontouchcancelled="console.info('canceled');"
>
<h1>This is a test</h1>
<p> Lore ip sum </p>
</body>
代碼這可怎麼固定?是否有一些我錯過的配置?
完整的源代碼可以在這裏找到:https://github.com/Daraku/WebViewBug
的setTimeout - 黑客,是我最終使用了(雖然我使用更小的時間值)。看起來,有沒有適當的解決方案:( – 2016-04-18 18:16:38