swift - UITextview 的 contentInset 和 scrollIndicatorInsets 与 Swift 中的键盘和旋转?

标签 swift uitextview

我正在使用 UITextView 并在键盘显示/隐藏时设置它的 contentInset 和 scrollIndicatorInsets,如下所示:

    override func viewDidLoad() {
        super.viewDidLoad()

        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardShow:", name: UIKeyboardWillShowNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardHide:", name: UIKeyboardWillHideNotification, object: nil)
    }

    override func shouldAutorotate() -> Bool {
        return !self.keyboardShowing
    }

    func keyboardShow(n:NSNotification) {
        self.keyboardShowing = true

        let d = n.userInfo!
        var r = (d[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
        r = self.tv.convertRect(r, fromView:nil)
        self.tv.contentInset.bottom = r.size.height
        self.tv.scrollIndicatorInsets.bottom = r.size.height
    }

    func keyboardHide(n:NSNotification) {
        self.keyboardShowing = false
        self.tv.contentInset = UIEdgeInsetsZero
        self.tv.scrollIndicatorInsets = UIEdgeInsetsZero
    }

它工作正常,但是当我旋转我的设备时,scrollIndicatorInsets 和 contentInset 没有随着我的新高度而改变。那我该怎么办?谢谢!

注意: View 顶部有一个导航栏

最佳答案

考虑 UIKeyboardDidChangeFrameNotification 通知。当键盘的框架刚刚改变时发送。实际上,您应该使用 UIKeyboardDidChangeFrameNotification 而不是使用 UIKeyboardWillShowNotification

关于swift - UITextview 的 contentInset 和 scrollIndicatorInsets 与 Swift 中的键盘和旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228230/

相关文章:

ios - 如何在 UITextView 中的空格之间获取单词?

ios - 单击 UITextField,我想运行一些代码

Swift 3 - CGAffineTransform 不起作用

ios - 删除不起作用,最后一个值不显示,用户默认使用 tableview

ios - 代码 : Text Field to String

ios - UITextView 在检测到 Action 时更改字体

swift - SpriteKit childNodeWithName 找不到现有节点

swift - 在 Swift 中使用具有关联值的枚举是否违反里氏替换原则?

ios - 如何获取数组的内容以显示在 uitextfield 上

ios - 如果我们在 Swift 中触摸 UITextView 之外的其他区域,如何关闭键盘