停止删除文本视图中的默认文本 (Swift)
Stop removal of default text in textview (Swift)
如果我有一个带有以下文本的 UITextView:
"Please finish this sent..."
目的是允许用户编辑 textview 以便他们可以完成句子,我怎样才能做到这样他们就无法删除在他们开始编辑之前存在的文本 "Please finish this sent"?
更新:我已经能够让用户无法删除初始文本,但是有什么方法可以让他们无法在初始文本之前或内部键入内容吗?感谢到目前为止回答的所有人!
更新:已解决。为了阻止人们在字符串之前和内部进行编辑,我只是添加了
if range.location == 0 {
return false
}
if (0 < range.location && range.location < count(string.utf16)) == true {
return false
}
到 shouldChangeTextInRange 函数。谢谢大家的帮助!
使用UITextFieldDelegate的函数
- textField:shouldChangeCharactersInRange:replacementString:
。调用此函数时,从 UITextField
中获取文本并查看它的开头是否包含您想要的字符串。如果是,returntrue
,否则returnfalse
这样您就可以阻止用户删除初始文本:
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
}
}
如果我有一个带有以下文本的 UITextView:
"Please finish this sent..."
目的是允许用户编辑 textview 以便他们可以完成句子,我怎样才能做到这样他们就无法删除在他们开始编辑之前存在的文本 "Please finish this sent"?
更新:我已经能够让用户无法删除初始文本,但是有什么方法可以让他们无法在初始文本之前或内部键入内容吗?感谢到目前为止回答的所有人!
更新:已解决。为了阻止人们在字符串之前和内部进行编辑,我只是添加了
if range.location == 0 {
return false
}
if (0 < range.location && range.location < count(string.utf16)) == true {
return false
}
到 shouldChangeTextInRange 函数。谢谢大家的帮助!
使用UITextFieldDelegate的函数
- textField:shouldChangeCharactersInRange:replacementString:
。调用此函数时,从 UITextField
中获取文本并查看它的开头是否包含您想要的字符串。如果是,returntrue
,否则returnfalse
这样您就可以阻止用户删除初始文本:
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
}
}