当键盘出现时,如何快速移动视图(Swift)

3
我有六个UITextFields在我的视图中,我想决定是否移动视图。在移动视图之前,如何检查哪个TextField被选中?
这是我的代码来显示键盘并移动视图:
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)

func keyboardWillShow(notification: NSNotification) {
            if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
                self.view.frame.origin.y -= keyboardSize.height - 85
            }
    }

    func keyboardWillHide(notification: NSNotification) {
            if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
                self.view.frame.origin.y += keyboardSize.height - 85
            }
    }

3
当键盘出现时如何移动文本框(Swift)?您需要监听键盘的显示和隐藏事件,并相应地调整文本框的位置。可以使用NSNotification机制来监听这些事件。当键盘显示时,将文本框的顶部移动到键盘顶部以下的某个位置,以确保文本框可见。当键盘隐藏时,将文本框移回原始位置。在Swift中,可以按照以下步骤执行此操作:
  1. 在视图控制器中添加对UIKeyboardWillShowNotification和UIKeyboardWillHideNotification通知的观察者。
  2. 使用NSNotification中提供的键盘高度信息来计算要移动的距离。
  3. 使用UIView动画将文本框移动到新位置。
以下是示例代码:override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil) } @objc func keyboardWillShow(notification: NSNotification) { if let userInfo = notification.userInfo, let keyboardSize = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0) scrollView.contentInset = contentInsets scrollView.scrollIndicatorInsets = contentInsets var frame = view.frame frame.size.height -= keyboardSize.height if let activeField = activeField, !frame.contains(activeField.frame.origin) { let scrollPoint = CGPoint(x: 0, y: activeField.frame.origin.y - keyboardSize.height) scrollView.setContentOffset(scrollPoint, animated: true) } } } @objc func keyboardWillHide(notification: NSNotification) { let contentInsets = UIEdgeInsets.zero scrollView.contentInset = contentInsets scrollView.scrollIndicatorInsets = contentInsets } func textFieldDidBeginEditing(_ textField: UITextField) { activeField = textField } func textFieldDidEndEditing(_ textField: UITextField) { activeField = nil }
- Akash
1个回答

3

如果您想知道哪个UITextField已被选中,您可以使用textFieldDidBeginEditingtextFieldDidEndEditing方法。

func textFieldDidBeginEditing(textField: UITextField!) {
    currentSelectedTextField = textField
}

func textFieldDidEndEditing(textField: UITextField!) {
    currentSelectedTextField = nil
}

以下是关于在选择UITextField时如何管理键盘的参考资料:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接