iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
1

今天是UITextView的完結篇~

Selection

Range

seletedRange儲存了當前選擇的範圍。如下圖的文字,print(newTextView.seletedRange)後會得到一個{75, 0}的數組。

這個property主要是為了存取狀態而存在。
也可以藉此設定一個NSRange來指定選擇的範圍,此property的值在iOS 2.2以為都是0,iOS 3以後才變成一串非0的數字。

而scrollRangeToVisible(_:)則會將你設定的NSRange捲動到可視的範圍內:

newTextView.scrollRangeToVisible(NSRange(location: 50, length: 10))


如範例我設定了NSRange從第50個字開始算10個字的長度(是你的損失,10點鐘),他就會在程式剛開始執行時被捲到可視位置(上圖左),如果沒有設定的話就不會捲動(上圖右)。

Clean On Insertion

clearsOnInsertion是個布林值,決定了新插入的文字是否會清空原本text view裡的文字,預設值為false。
當這個值為true且text view處於編輯模式時,將會插入新的文本、清空原本的內容,並將clearsOnInsertion變更為false。

Seletable

isSeletable決定了text view能否被選取,預設值為true。
如果isSeletable的值為false,使用者不但無法選取text view,也無法與text view內的任何超連結互動。

Replacing Input View

inputView會讓你的text view在成為first responder之後,跳出一個UIView來取代鍵盤。如果此property的值為nil則會跳出鍵盤,預設值為nil。

newTextView.inputView = pollyView

而inputAccessoryView則是會在你的鍵盤或inputView上顯示的裝飾視圖:

newTextView.inputAccessoryView = pollyView

Accessing Text Kit Objects

layoutManager是個get-only的property,為text view的文字內容設定佈局。
textContainer是個get-only的property,定義了text view裡的文字顯示範圍。
而textStorage則是管理text view裡顯示的文字,也是gey-only property。

State Preservation

先前有提到過的,app在待機或背景程式的狀態下,過一段時間就會重新讀取。如果你沒有特地設定狀態存取,app就會從開啟app時的狀態開始讀取,hen惱人。
在iOS 6之後的版本,你可以為text view設定restorationIdentifier去存取以下的狀態:

  • 將selected range裡的文字儲存在selectedRange這個property裡。
  • 將text view目前的編輯狀態存在isEditable裡。

而app在背景模式下重新讀取的時候,如果偵測到restorationIdentifier是個非nil字串,則會讀取此identifier對應儲存的狀態內容。

下一回開始是UIScrollView的篇章,鐵人賽只剩3天了,可能沒有辦法在賽期內講完。
不過即使鐵人賽結束,我還是會繼續寫下去的,到時後還請大家可以繼續支持我的文章喔~


上一篇
Day 26: 要被通緝了啊啊啊UITextView你等等我先發文再說
下一篇
Day 28: SKT打RNG好精彩喔是不是啊UIScrollView
系列文
Hey! UIKit, 做個朋友吧~30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言