如何隐藏键盘助手栏

时间:2016-06-13 23:04:08

标签: ios ipad keyboard

我正在使用iPad应用,我无法隐藏软键盘上方显示的UIKeyboardAssistantBar,带有文字预测等。请参见下图,其中显示了全键盘,只是为了提供参考 - 我要隐藏的栏位于键盘上方(显示" 2")

Keyboard + assistant bar

我遇到的问题是当使用外接键盘时:当文本视图获得焦点时,软键盘不显示,但是总是显示助手栏 - 我到目前为止找到的唯一方法是让用户使用最右侧的图标手动隐藏它。

理想情况下,我正在寻找的解决方案是启用或禁用该解决方案的全局调用,因此我不必为每个文本视图单独处理。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

你可以试试一招。这是代码:

let item = self.yourTextView.inputAssistantItem;
item.leadingBarButtonGroups = [];
item.trailingBarButtonGroups = [];

答案 1 :(得分:0)

接受的解决方案将隐藏键盘上的前导和尾随BarButtonGroups,但不幸的是它不会隐藏建议/自动更正栏(带有建议的“2”的中心按钮。

我需要一个iPad本机应用程序,它需要一个使用WKWebView呈现HTML登录页面的HTML登录页面。为了隐藏建议按钮,我使用了一些注入的javascript,因为我无法控制HTML登录页面。下面的Swift 3代码创建了WKWebView(替换了视图对象并将userScript注入到页面中):

#include <iostream>

int main(){
  int length = 0;             // declare an integer variable length and set it to 0
  std::cin >> length;         // get input from user and store it in variable length
  char p[length];             // declare a character array named p to the size of "length"
                              // this is not legal in standard c++. It is an extension 
                              // that some compilers support as pointed out by (drescherjm)
  int i = 0;                  // declare an integer variable i and set it to 0
  while(i < length){          // loop block while i is less then the value of length
    std::cin >> p[i];         // get input from user and store that value in element i of the p array

    std::cout << ++i;         // increment the value of i and output the value to the console
  }
  std::cout << p;             // output the the contents of the p array to the console.
}

答案 2 :(得分:0)

实际上,即使启用了contenteditable,这也是一种有效的方法:

func findKeyboardAssistantView() -> UIView? {
    let result: UIView? = nil

    let windows = UIApplication.shared.windows

    let prefixes = [
        "<UIInputSetContainerView",
        "<UIInputSetHostView",
        "<_UIKBCompatInputView",
        "<UIKeyboardAutomatic",
        "<UIKeyboardImpl",
    ]
    for window in windows {
        if window.description.hasPrefix("<UIRemoteKeyboardWindow") {
            var last = window.subviews
            for p in prefixes {
                for s in last {
                    if s.description.hasPrefix(p) {
                        last = s.subviews
                    }
                }
            }
            for s in last {
                if s.description.hasPrefix("<UIKeyboardAssistantBar") {
                    return s
                }
            }
            break
        }
    }
    return result
}
findKeyboardAssistantView()?.isHidden = true
  

请注意,必须在发送UIResponder.keyboardWillShowNotification时将其触发