2012-09-18 158 views
0

我有UIWebView在我允許在運行時編輯。如何檢測鍵盤輸入密鑰?

現在當我點擊UIWebView然後iPad鍵盤打開寫入,現在我的要求是如何檢測我點擊iPad鍵盤的輸入鍵?

我知道如果我們使用它的代表在UITextViewUITextField進行編輯,我們可以實現這一點。幫助我!

我有一個函數在javascript中檢測它。

function returnEnterPress(e){ 
    var key;  
    if(window.event) 
      key = window.event.keyCode; //IE 
    else 
      key = e.which; //firefox  
      // ENTER KEY MUNBER IS 13 // KD 
    if(key == 13) 
    { 
     //alert('enter'); 
    } 
    return false; 
} 

現在我可以調用它使用objective-c的代碼,並可以得到返回值,如真或假?

+0

退房提供的功能,當你點擊輸入密鑰 – Ranjit

回答

1

我通過這樣的JavaScript做我的工作......

在HTML文件

function returnEnterPress(e){ 
    var key;  
    if(window.event) 
      key = window.event.keyCode; //IE 
    else 
      key = e.which; //firefox  
      // ENTER KEY MUNBER IS 13 // KD 
    if(key == 13) 
    { 
     window.location.href = 'enterClicked/0'; 
    } 
    else 
    { 
     var range = window.getSelection().getRangeAt(0).endOffset; 
     if(range == 0) 
     { 
      window.location.href = 'enterClicked/'+range; 
     } 
    } 
    return true; 
} 

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

在我的Objective-C代碼

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 

    if([[[request URL] absoluteString] rangeOfString:@"enterClicked"].location!=NSNotFound) // When "enterClicked" found 
    { 
     //Do your desired work 
     return NO; 
    } 
} 
0

我不認爲有一個公共的API來處理該級別的鍵盤。這是相當大的努力(因爲國際鍵盤),但一種選擇是聽取UIKeyboardWillShow通知,並將鍵盤覆蓋透明UIView s用於您想要聽的按鈕。你可以捕捉觸摸,然後傳遞給下面的視圖(鍵盤),讓它做它的事情。

您甚至可以在透明按鈕中覆蓋(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;。因此,您可以捕捉觸摸事實,但無論如何都要返回NO,以便鍵盤能夠觸摸。

然後難以知道每個鍵的位置,具體取決於您需要支持的鍵盤類型。

0

使用一些鍵盤通知。我用下面的代碼來檢測鍵盤是否會隱藏

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(nothing) name:UIKeyboardWillHideNotification object:nil]; 
} 
-(void)nothing 
{ 
    NSLog(@"do Whatever u want"); 
} 

試試吧。

+0

如果用戶使用硬件鍵盤,我不確定這是否適用 - 如果使用此鍵盤,則應使用「模擬硬件鍵盤」選項檢查模擬器。 –

+0

@MikeM這裏的問題是如果用戶點擊了iPad鍵盤的回車鍵。我正在回答他問的問題。補充:如果用戶有硬件鍵盤,通知也會起作用。 – Manikandan

0

你也許可以使用某種Javascript來弄懂它,但我只是使用表單/提交按鈕。