我有一个UIWebView
,我用它来渲染样式化的HTML文本。由于div上的contentEditable
设置为true,因此Web视图中的内容是可编辑的。
我想继续拦截用户的按键操作,这样我就可以在用户输入时继续调整UIWebView
的大小。如何拦截按键事件?
答案 0 :(得分:2)
首先定义一个虚拟网址
#define kDummyURL @"dummyurl://dummy"
然后在视图中加载添加javascript
-(void)webViewDidFinishLoad:(UIWebView *)webView{
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"$(function(){$('input, textarea').keypress(function() {window.location = \"%@\";});})",kDummyURL]];
}
并且应该开始加载请求尝试捕获将由刚刚添加的javascript触发的dummyurl
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if ([[request.URL absoluteString] isEqualToString:kDummyURL]) {
//key is pressed on HTML page, here you can implement what you want
return NO;
}
return YES:
}