Swift日誌:textView使用技巧

textView相對於textField只能輸入一行內容,超過便不能滑動的特性來講,textView彈性許多(可以滑動文字框,輸入很多字),但他的屬性基本上與textField一樣,今天就來寫個範例:

畫面上有兩個按鈕和一個textView,這次除了要做textView還要讓鍵盤彈起時自動修正textView的frame(如下圖)

程式碼如下:

先定義按鈕們和textView,加上一些等下frame要用的x,y寬高
注意!ButtonTag是要用來區別undo與done按鈕的,搭配switch使用

再來viewDidLoad我們直接呼叫self.initUI這個方法去使用
在viewWillAppear裡加上點擊textView會彈出keyboard的code
其用意在於對NotificationCenter呼叫鍵盤的開關,方法是固定的,寫久就習慣了
viewWillDisappear的部分是怕如果有不同的頁面要切換,那把通知給取消,可以減少不少記憶體的使用

下面一連串的只是建構物件和給物件位置&屬性,便不再贅述

按鈕的方法寫在這裡,比較主要是setUI要計算當鍵盤彈起textView的高度那段
onButtonAction定義當兩顆按鈕按下要做什麼
keyboardWillShow那段比較複雜,講述keyboard彈起的動畫,也是固定寫法
keyboardWillHide比較簡單,只是回傳歸零而已

最後收尾是用extension把UITextView的Delegate寫在這兒
為暫存文字的方法:
textViewDidBeginEditing開始編輯就儲存一次,但還不夠
所以在用shouldChangeTextIn的方式存一遍

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料