菜鸟教程小白 发表于 2022-12-11 18:55:12

iOS 数字键盘,能够打开文本键盘


                                            <p><p>我有一个文本字段,我想在用户开始输入时使用这样的键盘:</p>

<p> <a href="/image/018pY.png" rel="noreferrer noopener nofollow"><img src="/image/018pY.png" alt="enter image description here"/></a> </p>

<p>也请观看此视频:<a href="https://youtu.be/iU_jocny3N0" rel="noreferrer noopener nofollow">https://youtu.be/iU_jocny3N0</a> </p>

<p>正如您在此视频中看到的,有一个“ABC”键可帮助用户从数字键盘切换到文本。并且当在文本中按“123”时,键盘会从文本切换到数字键盘。我想知道他们是怎么做到的?</p>

<p>我发现的唯一解决方案是向键盘添加 subview ,如下所述:</p>

<p> <a href="https://stackoverflow.com/questions/4360140/adding-done-button-to-only-number-pad-keyboard-on-iphone" rel="noreferrer noopener nofollow">Adding Done Button to Only Number Pad Keyboard on iPhone</a> </p>

<p>但是当用户使用自定义键盘时,这种方式可能不起作用。也不适用于从文本切换到数字键盘。</p>

<p>或者作为另一种解决方案,我知道 <code>accessoryInputView</code> 但这不像视频。它在键盘上方添加了一个工具栏。</p>

<p>有人知道此视频中使用的解决方案吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我在键盘上添加了逗号按钮,</p>

<p>Keyboard 也是一个简单的 <strong>UIView</strong>,其中包含 <strong>Controls</strong> </p>

<p>注意:这是旧代码在我的旧项目中运行 未在新项目中测试</p>

<pre><code>- (void) keyboardWillShow:(NSNotification *)note {
    // create custom button

    dispatch_async(dispatch_get_main_queue(), ^{
      // Some code
      UITextField *txt = (UITextField *);
      if (txt.keyboardType == UIKeyboardTypeDecimalPad) {
            UIButton * btnComma = ;
            ;

            UIView* keyboard = ;

//            btnComma.frame = CGRectMake(0, 162, 126, 54);

            btnComma.frame = ;







            if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@&#34;8.0&#34;)) {
                ;
            }

            ];
            btnComma.adjustsImageWhenHighlighted = NO;
            ;
             forState:UIControlStateNormal];
            ];
            ;

            ;
            btnComma = nil;
      }
    });
}
- (UIView *) viewWithPrefix:(NSString *)prefix inView:(UIView *)view {
    for (UIView *subview in view.subviews) {
      if ([ hasPrefix:prefix]) {
            return subview;
      }
    }
    return nil;
}
</code></pre>

<p>这个从<strong>UIWindow</strong>中寻找键盘的方法</p>

<pre><code>- (UIView *) findKeyboard {
    for (UIWindow* window in .windows) {
      UIView *inputSetContainer = ;
      if (inputSetContainer) {
            UIView *inputSetHost = ;
            if (inputSetHost) {
                UIView *kbinputbackdrop = ;
                if (kbinputbackdrop) {
                  UIView *theKeyboard = ;
                  return theKeyboard;
                }
            }
      }
    }

    return nil;
}
</code></pre>

<p>和用于查找右下角按钮的大小</p>

<pre><code>- (CGRect ) findKeySizeForView:(UIView *)view {
    if (view != nil) {
      UIView *uiKeyboardImpl = ;
      if (uiKeyboardImpl != nil) {
            UIView *uiKeyboardLayoutStar = ;
            if (uiKeyboardLayoutStar != nil) {
                UIView *uiKBKeyplaneView = ;
                if (uiKBKeyplaneView != nil) {
                  for (view in ) {
                        CGPoint pointOrigin =view.layer.frame.origin;
                        if (pointOrigin.x &lt;= 0 &amp;&amp; pointOrigin.y == uiKBKeyplaneView.frame.size.height - view.frame.size.height &amp;&amp; [ hasPrefix:@&#34;&lt;UIKBKeyView&#34;])
                            returnview.layer.frame;
                  }
                }
            }
      }

    }
    return CGRectZero;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 数字键盘,能够打开文本键盘,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46585218/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46585218/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 数字键盘,能够打开文本键盘