【问题标题】:How to detect keyboard enter key?如何检测键盘输入键?
【发布时间】:2012-09-10 15:57:36
【问题描述】:

我在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?

【问题讨论】:

  • 点击回车键查看可用功能

标签: objective-c ios uiwebview


【解决方案1】:

我认为在那个级别没有处理键盘的公共 API。这是一项相当大的努力(因为国际键盘),但一种选择是收听UIKeyboardWillShow 通知并用透明的UIViews 覆盖键盘以获取您想要收听的按钮。您可以捕获触摸,然后将其传递给下面的视图(键盘)并让它完成它的工作。

您甚至可以在透明按钮中覆盖(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;。所以你捕捉到它被触摸的事实,但无论如何都返回NO,以便键盘得到触摸。

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

【讨论】:

    【解决方案2】:

    使用一些键盘通知。我使用以下代码来检测键盘将要隐藏

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

    试试看。,.

    【讨论】:

    • 如果用户有硬件键盘,我不确定这是否有效 - 如果您使用它,您应该使用“模拟硬件键盘”选项检查模拟器。
    • @MikeM 这里的问题是用户是否点击了 iPad 键盘的回车键。我正在回答他提出的问题。补充:如果用户有硬件键盘,通知也会起作用。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我是这样通过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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 2015-02-16
        • 1970-01-01
        • 2017-11-23
        • 2014-07-08
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多