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 被键盘隐藏的主要内容,如果未能解决你的问题,请参考以下文章

静态表视图 - 键盘隐藏的 UITextField

无法关闭键盘,UITextField 委托被调用 OK

如何在 viewDidLoad 上的 Swift 中显示没有 UITextField 的标准数字键盘

Swift:无法让 UITextField 关闭键盘

键盘出现时UITextField上移【Swift】

创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?