繁体   English   中英

出现键盘时,如何正确设置UITextView的contentInset

[英]How should I correctly set contentInset for UITextView when Keyboard appears

我试图在显示键盘时更改UITextViewcontentInsets属性,以使其不会隐藏在键盘后面。 我查看了有关此任务的许多问题,并尝试遵循已批准或投票表决很高的答案,并尝试遵循Apple推荐的方法:

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7

我的代码目前在ViewDidLoad()中如下所示:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)

选择器指示的功能是:

func keyboardWillShow(notification : NSNotification){
    let info :NSDictionary = notification.userInfo! as NSDictionary;
    if let keyboardRect = info.objectForKey(UIKeyboardFrameEndUserInfoKey){
        var inset = commentsText.contentInset;
        inset.bottom = keyboardRect.size.height
        UIView.animateWithDuration(0.25, animations: {
            self.commentsText.contentInset = inset
        })
    }
}

commentsText是我要调整其纯真性的UITextView的名称。

我遇到的问题是,当尝试访问keyboardRect.size.heigh我遇到致命错误,即试图解开意外的nil值。 我真的不确定如何解决此问题,因为据我所知,我正在遵循公认的答案和说明文件(动画块是Apple文档的补充,但这是来自公认的答案,“ 如何在键盘操作时调整视图大小)使用“自动布局”弹出 ,所以我认为这可能不是问题的根源。

我也尝试过使用UIKeyboardDidShowNotification以及UIKeyboardFrameBeginUserInfoKey ,但是这些替换都没有改变错误。 Apple的文档以及有关此主题的大多数问题/答案都在Objective-C中,尽管我认为出于我的目的将它们正确地“翻译”成了Swift,但如果是这种情况,我很可能在某个地方犯了一个错误。让我知道我的错误是什么。

任何帮助/建议,将不胜感激。

提前致谢。

PS我目前在Xcode 7 Beta 6中工作

这是从NSNotification中获取键盘rect(CGRect)的方法:

let info = notification.userInfo!
let keyboardRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM