Swift:UITextField 被键盘隐藏
Posted
技术标签:
【中文标题】Swift:UITextField 被键盘隐藏【英文标题】:Swift: UITextField is hidden by Keyboard 【发布时间】:2015-02-06 01:33:53 【问题描述】:我的 ViewController 上有两个 UItextField。第一个位于 ViewController 的上半部分,而第二个位于底部。
我设法让键盘在返回时隐藏起来,当我点击第二个(下方)UItextField 时,键盘会出现并覆盖它。这意味着不再可能看到您正在输入的内容。
如何在单击第二个 UItextField 时将 ViewController 向上移动,以便用户可以看到他们正在输入的内容,然后在用户按下返回时将 ViewController 向下移动?
【问题讨论】:
这可能会有所帮助(Objective-C):***.com/questions/1247113/… 我是 ios 开发的新手,从未接触过 Objective-C:/ 由于基础的 swift 课程才开始学习。 关于这个问题有很多堆栈。查看:[众多][1] [1]:***.com/questions/1126726/… 这里很快。查看@user3677173 的回答:***.com/questions/26070242/… 最好在Static tableView中设计屏幕。 【参考方案1】:使用 scrollView 并在键盘显示时滚动文本字段
【讨论】:
【参考方案2】:在您的孔视图(ViewController 视图)中添加滚动视图 然后添加隐藏和显示键盘的通知
当键盘显示时,通过减去键盘隐藏来更改滚动视图的内容插入:scrollView.ContentInsets.height - keyboard.height:
func registerForKeyboardNotifications()
//Adding notifies on keyboard appearing
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIWindow.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIWindow.keyboardWillHideNotification, object: nil)
@objc
func keyboardWillShow(notification: NSNotification)
guard let keyboareRect = notification.userInfo?[UIWindow.keyboardFrameBeginUserInfoKey] as? CGRect else return
let keyboardSize = keyboareRect.size
let insets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
scrollView.contentInset = insets
scrollView.scrollIndicatorInsets = insets
var aRect = self.view.frame
aRect.size.height -= keyboardSize.height
guard let activeTextField = self.activeTextField else return
if !aRect.contains(activeTextField.frame.origin)
scrollView.scrollRectToVisible(activeTextField.frame, animated: true)
@objc
func keyboardWillHide(notification: NSNotification)
scrollView.contentInset = UIEdgeInsets.zero
scrollView.scrollIndicatorInsets = UIEdgeInsets.zero
【讨论】:
以上是关于Swift:UITextField 被键盘隐藏的主要内容,如果未能解决你的问题,请参考以下文章
如何在 viewDidLoad 上的 Swift 中显示没有 UITextField 的标准数字键盘
创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?