簡體   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