所以我的iOS應用程序有一個UIScrollview設置在故事板上使用自動佈局的頂部,底部,領先和尾隨約束綁定到超級視圖。在scrollview裏面我有stackview和多個垂直堆疊的UITextviews。 scrollview的內容設置很好,我甚至可以上下滾動。UITextview鍵盤處理,當它嵌入在UIScrollView
現在,我的問題來了鍵盤處理。我處理蘋果的文檔中推薦的鍵盤同樣的方式:Apple's Keyboard handling documentation
有問題如下所示僅作參考,但它非常簡單,只是蘋果的例子的複製粘貼的特定代碼:
func keyboardDidShow(notification: NSNotification){
var info = notification.userInfo!
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
var aRect : CGRect = self.view.frame
aRect.size.height -= keyboardSize!.height
if self.activeTextView != nil {
if (!aRect.contains(self.activeTextView!.bounds)){
self.scrollView.scrollRectToVisible(self.activeTextView!.frame, animated: true)
}
}
}
我鍵盤處理代碼適用於UITextFields,但它不適用於UITextFields。 self.scrollView.scrollRectToVisible(self.activeTextView!.frame, animated: true)
被調用,但不會發生滾動。
我研究了一下,發現,蘋果不建議嵌入的UITextView一個UIScrollView內:Placing a text view inside of a scroll view
配售滾動視圖的內部文本視圖。文本視圖處理自己的滾動。您不應該在滾動視圖中嵌入文本視圖對象。如果這樣做,可能會導致意外的行爲,因爲兩個對象的觸摸事件可能混淆並被錯誤地處理。
但是,我真的需要這個「自動」滾動到隱藏文本視圖,以使用與UITextFields相同的方式。有什麼建議麼??
PS:我應該提到,我不介意禁用UITextViews中的滾動操作,因爲我已經使用自動佈局自動調整UITextViews以適合其內容。
看起來像一個很好的圖書館,雖然它會是我的用例矯枉過正。也許是爲了更大的項目。但對於我的用例KevinM的答案效果很好。 –