【发布时间】:2015-09-15 03:15:45
【问题描述】:
我试图在键盘显示时更改UITextView 的contentInsets 属性,使其不会隐藏在键盘后面。我查看了有关此任务的一些问题,并尝试遵循批准或高度投票的答案,并尝试遵循 Apple 推荐的方法:
我的代码目前如下,在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 文档的补充,但它来自公认的答案 How do I resize views when keyboard pops up using Auto Layout,所以我认为这可能不是问题的根源。
我也尝试过使用UIKeyboardDidShowNotification 和UIKeyboardFrameBeginUserInfoKey,但是这些替换都没有改变错误。
Apple 的文档和有关该主题的大多数问题/答案都在 Objective-C 中,虽然我认为我出于我的目的正确地将它们“翻译”成 Swift,但我完全有可能在某个地方犯了错误,如果是这种情况,请让我知道我的错误是什么。
任何帮助/建议将不胜感激。
提前致谢。
附:我目前正在使用 Xcode 7 Beta 6
【问题讨论】:
标签: ios swift uitextview