2012-04-02 4 views
1

UIWebViewのキーボードで "return"キーをカスタマイズしたいと思います。通常、UITextFieldのreturnKeyプロパティを設定することでこれを行うことができますが、アプリケーションがHTMLであるため、UITextFieldsはなく、テキストエリアだけです。UIWebView、 "return"キーをカスタマイズする

現在のところ、私の回避策は、右下にある置換ボタンを非表示にし、それをキーボードで上向きにアニメーションして、リターンキーのオンタップに置くことです。実際にはうまく見えますが、私のコードはiOSの将来のバージョンでは動作しない可能性があります。

これを行うには良い方法がありますか? iOS4にはUIKeyBoardにアクセスする方法がありましたが、iOS5はこれを削除しました。

答えて

5

Returnキーをに触れた場合は、この

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

のように見えるページにJavaScript関数があり、私はこの

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

のようなHTMLのbodyタグにonKeyPressイベントを追加を表示するには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ですべての編集を終了し、キーボードを閉じ、特定のテキストエリアまたは入力からフォーカスを削除します。

ウェブビューの状況(「完了」など)でリターンキーの「ラベル」を変更する方法は、まだ私にとって謎です。アイデア?

UPDATE: 私は、リターンキーをテキストエリアに正常に機能できるようにするには、この

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

にJavaScript関数を変更しました。

関連する問題