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 滚动到正确的位置