如何检测键盘输入键?

时间:2012-09-18 11:29:05

标签: objective-c ios uiwebview

我在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代码调用它并且可以获得类似true或false的返回值吗?

4 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

我认为在该级别处理键盘时没有公共API。这是一项非常大的工作(因为国际键盘),但一种选择是收听UIKeyboardWillShow通知,并使用透明UIView覆盖键盘,以便您想要收听的按钮。你可以捕捉到触摸,然后将其传递给下面的视图(键盘)并让它做它的事情。

您甚至可以在透明按钮中覆盖(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;。因此,您可以捕获触摸但返回NO的事实,以便键盘触摸。

然后很难知道每个键的位置,具体取决于您需要支持的键盘类型。

答案 2 :(得分:0)

使用一些键盘通知。我用以下代码检测键盘是否会隐藏

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

试试吧。,

答案 3 :(得分:0)

您可以使用某种Javascript来解决这个问题,但我只想使用表单/提交按钮。