2012-04-02 55 views
1

我想定制UIWebView键盘中的“返回”键。通常你可以通过设置UITextField的returnKey属性来做到这一点,但是因为应用程序是HTML格式的,所以没有UITextFields,只有textareas。UIWebView,自定义“返回”键

目前,我的解决方法是隐藏右下角的替换按钮,并使用键盘向上移动它,使其位于返回键的顶部。它看起来非常好,但是我担心我的代码可能无法在未来版本的iOS中工作。有没有更好的方法可以做到这一点?我知道在iOS4中有一种方法来访问UIKeyBoard,但iOS5删除了这个。

回答

5

要查看如果回车键被感动我添加onkeypress事件的HTML body标签这样

<body onKeyPress="return returnKeyPressed(event)"> 

有看起来像这样

function returnKeyPressed(event){ 
    if(window.event.keyCode == 13) document.location = "returnkeypressed:"; 
    return true; 
} 

页面上的javascript函数我有这个在这个类是webView代理

- (BOOL)webView:(UIWebView*)aWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{ 
    NSString *requestString = [[request URL] absoluteString]; 
    NSArray *components = [requestString componentsSeparatedByString:@":"]; 
    NSString *theTask = (NSString *)[components objectAtIndex:0]; 

    if([theTask isEqualToString:@"returnkeypressed"]) [aWebView endEditing:YES]; 
} 

这只是结束在webView中的所有编辑,关闭键盘,并从任何特定的textarea或输入删除焦点。

如何在webView的情况下(如'完成')更改返回键的“标签”对我来说仍然是一个谜。想法?

更新: 我改变了JavaScript函数来此

function returnKeyPressed(event){ 
    if(event.srcElement.nodeName == 'INPUT' && window.event.keyCode == 13) document.location = "returnkeypressed:"; 
    return true; 
} 

允许返回键在文字区域正常工作。