Swift - 如何在使用软件键盘时使 UITextField 可见? [复制]

Posted

技术标签:

【中文标题】Swift - 如何在使用软件键盘时使 UITextField 可见? [复制]【英文标题】:Swift - How to make the UITextField visible when software keyboard is being used by it? [duplicate] 【发布时间】:2018-08-02 11:29:02 【问题描述】:

我的应用程序布局页面出现问题,我想添加一些文本字段,我已经这样做了,但其中一些在屏幕页面的下方,当我输入前两个时字段没问题,但是当我进入第三个和第四个以及最后一个文本字段时,键盘弹出窗口将其覆盖,用户无法看到他们正在输入的内容,如图所示。

有没有办法做到这一点,当用户点击一个特定的文本字段时,尤其是最后三个,他们仍然可以看到他们正在输入的内容并且不会如图所示被阻止。

非常感谢您的帮助:)

Picture that shows text fields

Picture that shows blocked text fields

【问题讨论】:

【参考方案1】:

您可以使用以下库在键盘出现时自动调整屏幕高度。

    IQ Key Borad 实现:- 在 Appdelegate didFinishLaunchingWithOptions 中添加了以下代码 IQKeyboardManager.shared.enable = true

注意:- 如果您使用 IQ 键盘工具栏将始终出现在键盘上方。

    TP KeyBoard (要实现这一点,您应该将 scroll/TableView/CollectionView 类设置为 TPkeyboardAvoidingScrollView/TPkeyboardAvoidingTableView/TPkeyboardAvoidingCollectionView)

你应该使用键盘通知来调整高度约束。

 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

//MARK:- 键盘通知

  @objc func keyboardWillShow(_ notification:Notification) 
        if let height = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height 
                selectedImageViewToBottom.constant = height

        
    

    @objc func keyboardWillHide(_ notification:Notification) 
        selectedImageViewToBottom.constant = 0
    

【讨论】:

【参考方案2】:

使用 NotificationCenter 跟踪键盘的出现和消失。

你可以在Move textfield when keyboard appears swift找到它。

你也可以使用https://github.com/hackiftekhar/IQKeyboardManager IQKeyboard manager library,他们做得很好。

【讨论】:

以上是关于Swift - 如何在使用软件键盘时使 UITextField 可见? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义键盘时使 UITableView 滚动到正确的位置

在 Swift 中高亮时使 CollectionViewCell 反弹

键盘出现时如何滚动 UIScrollView?

如何在 Swift 2.0 中使用完成按钮做数字键盘?

Swift 4 - 如何使用按钮启用/禁用键盘

Swift:如果用户达到最大字符,如何移动到下一个 UITextField