2012-04-02 4 views
1

UIWebView의 키보드에서 "return"키를 사용자 정의하고 싶습니다. 일반적으로 UITextField의 returnKey 속성을 설정하여이 작업을 수행 할 수 있지만 응용 프로그램이 HTML이므로 UITextFields가없고 텍스트 영역 만 있습니다.UIWebView, "return"키를 사용자 정의하십시오.

현재 해결 방법은 오른쪽 하단 모서리에있는 교체 버튼을 숨기고 키보드로 위로 움직여 리턴 키의 꼭대기에 앉히는 것입니다. 실제로는 좋지만 실제로 코드가 iOS의 이후 버전에서 작동하지 않을 수도 있습니다.

더 좋은 방법이 있나요? iOS4에는 UIKeyBoard에 액세스하는 방법이 있지만 iOS5에서는이를 제거했습니다.

답변

5

리턴 키가 감동 한 경우이

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

처럼 보이는 페이지에 자바 스크립트 함수가있다 나는이

<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에서 모든 편집을 끝내고 키보드를 닫고 특정 텍스트 영역이나 입력에서 포커스를 제거합니다.

WebView 상황 ('완료'와 같은)에서 Return 키의 "레이블"을 변경하는 방법은 여전히 ​​나에게 신비입니다. 아이디어?

UPDATE

: 나는 리턴 키를 텍스트 영역에서 정상적으로 작동 할 수 있도록이

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

에 자바 스크립트 함수를 변경했습니다.

관련 문제