[英]UITextField - uneditable prefixed characters both in beginning & end
我有一個UITextField,我想給它不可編輯的字符。 例如,我有"Hello..."
,並且我希望用戶在o
和之間書寫.
例如"Hello userTypedStuff..."
我使用了這種方法,但是,用戶可以長按開頭,例如轉到Hello內的位置。 因此,用戶可能會弄混前綴字符。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let protectedRange = NSMakeRange(0, 5)
let intersection = NSIntersectionRange(protectedRange, range)
if intersection.length > 0 {
return false
}
if range.location == 12 {
return true
}
if range.location + range.length > 12 {
return false
}
return true
}
如何設置“不可編輯的前5個字符和后3個字符”之類的內容?
編輯:UITextField的文本對齊中心,並在UILabel上方形成。 但是,如果給textField標簽的寬度,則textField的寬度不會變大。 因此,我給出了其寬度視圖的寬度。 有沒有一種方法,我可以在其兩端創建的UILabel Hello
和...
分開,並且具有自動伸展寬度中間文本框(文本對齊中心)?
編輯2:
如果我的文本視圖的兩邊都帶有兩個靜態UILabel,則可以解決。 但是,這一次,隨着用戶開始輸入,UITextField不會將UILabel推向側面。TextField居中為textAligned。 如果我在創建它時給它一個恆定的寬度(使用CGRectMake
編程),它將不會隨着用戶的輸入而擴展其寬度。因此,我給它提供了視圖的寬度。 有沒有一種方法可以在用戶鍵入內容時自動拉伸TextField的寬度,從而將UILabel推向側面?
"Hello" [textfield] "..."
uilabel uilabel
class SpecialTextField: UITextField {
// MARK: - UITextField Observing
override internal func willMoveToSuperview(newSuperview: UIView!) {
if newSuperview != nil {
text = "Hello..."
addTarget(self, action: #selector(SpecialTextField.didChangeText), forControlEvents: .EditingChanged)
}
}
override internal func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
return false
}
private var newVal: String = "Hello..."
func didChangeText() {
var userDidEditDefaultValue = true
if (text?.characters.count > 7) { // Count of "Hello..."
if text?.rangeOfString("Hello") != nil {
if text?.rangeOfString("...") != nil {
userDidEditDefaultValue = false
}
}
}
if userDidEditDefaultValue {
text = newVal
}
newVal = text ?? "Hello..."
}
}
這將不允許用戶更改默認值“ Hello ...”或“ Hello userEntry ...”
您可以使用委托方法在中間插入文本。
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.