如果我有一个带有以下文字的UITextView:
“请完成此发送......”
目的是允许用户编辑textview,以便他们可以完成句子,我怎样才能使它们在开始编辑之前无法删除那里的文本又称“请完成此发送“?
更新:我能够做到这一点,以便用户无法删除初始文本,但有没有办法使它们无法在初始文本之前或在其中输入?感谢所有回答到目前为止的人!
更新:已解决。为了阻止人们在字符串之前和之内编辑,我只需添加
if range.location == 0 {
return false
}
if (0 < range.location && range.location < count(string.utf16)) == true {
return false
}
到shouldChangeTextInRange函数。谢谢大家的帮助!
答案 0 :(得分:0)
使用UITextFieldDelegate的函数
- textField:shouldChangeCharactersInRange:replacementString:
。调用此函数时,从UITextField
获取文本并查看其开头是否包含所需的字符串。如果是,请返回true
,否则返回false
答案 1 :(得分:0)
这样您就可以阻止用户删除初始文本:
import UIKit
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textV: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
textV.text = "Please finish this sent" //Set your default text.
textV.delegate = self
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
let char = text.cStringUsingEncoding(NSUTF8StringEncoding)!
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
// If backspace is pressed this will call
if textV.text == "Please finish this sent" {
return false
}
}
return true
}
}