ios - 在 iOS Swift 中使用键盘平移手势处理文本输入 View 移动

标签 ios swift xcode

我正在开发一个 iOS 应用,并且 我有一个消息传递 View ,我想在其中处理这种情况: -> 我在 View 底部有一个输入 View ,除了某些用户被阻止/限制发送消息的条件外,它需要一直可见。 -> 当输入 View 聚焦时,键盘出现,我想将 View 与键盘框架一起移动。 -> 我希望键盘通过表格 View 滚动以交互方式关闭。话虽这么说, View 应该响应键盘平移手势并随之移动 -> 我尝试使用输入附件 View ,但问题是当键盘因表格 View 滚动而被关闭时,输入 View 也被关闭。 -> 我也尝试过使用 willShow/willHide/willChangeFrame 观察者,但是这样一来,响应就不是重点了,它也不会响应键盘交互关闭。 有人对此有解决方案... 感谢您的宝贵时间。

最佳答案

swift 3+: 我查看了 textview 背景并设置了 View 约束 (前导、尾随、底部、固定高度)。为底部约束创建一个@IBOutlet 并在下面的代码中进行管理:

class ViewController: UIViewController {

    @IBOutlet var bottomConstraint: NSLayoutConstraint!
    @IBOutlet var view_TextViewBg: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardDidShow(_:)),
            name: NSNotification.Name.UIKeyboardWillShow,
            object: nil)
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardDidHide(_:)),
            name: NSNotification.Name.UIKeyboardWillHide,
            object: nil)

        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
        //  tap.delegate = self
        view.addGestureRecognizer(tap)

    }
    func handleTap(sender: UITapGestureRecognizer? = nil) {
        //dissmiss your keyboard here
    }

    //MARK: Keyboard show

    func keyboardDidShow(_ notification: Notification) {
        let params = notification.userInfo
        let rect: CGRect? = (params?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue
        bottomConstraint.constant = (rect?.size.height)!
    }

    //MARK: Keyboard hide

    func keyboardDidHide(_ notification: Notification) {
        bottomConstraint.constant = 0
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

enter image description here

关于ios - 在 iOS Swift 中使用键盘平移手势处理文本输入 View 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430962/

相关文章:

ios - 使用日期选择器的本地 UNMutableNotificationContent 触发日期

ios - 键盘来时,如何设置UITextView中的文本字段上下移动?

swift - 如何将协议(protocol)属性默认实现编码为字典

ios - 不同构建配置的不同 Bundle Identifier

ios - Cordova IOS 构建错误(清理项目)

ios - 多个命令在存档上产生 gRPCCertificates.bundle 错误(iOS Xcode 11.1,Firebase SDK)

ios - 应用程序拒绝 - 子类别

objective-c - NSPredicate,CoreData 中的空格。如何修剪谓词?

swift - ios 11 自定义导航栏位于状态栏下方

swift - 如何处理主队列上的多个 moc