如何在 textview swift 中保持一些文本不可编辑和一些可编辑?
How to keep some text non editable and some editable in textview swift?
我有一个文本视图,我想让一些文本不可编辑,而其他文本可编辑。
对于前。我的文本视图有文本 "My name is: Sandesh Sardar"。所以我的名字应该是不可编辑的,其他文本应该是可编辑的。在 Swift 5 中有什么方法可以做到这一点?
这可以使用文本范围吗?意味着如果我有大的不可编辑的文本?
如果我有多个这样的文本视图,还有什么更好的方法吗?
或者我们如何在文本视图中的特定范围后停止编辑?
使用这段代码得到你的结果。这意味着如果现有文本是 My name is:
,则 textView
在编辑时不会 return true
。例如,如果您想在用户输入大约 30 个字符后停止,请在内部进行检查,如下所示。
extension ViewController: UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if let textViewText = textView.text {
if textViewText == "My name is:" && text == "" {
return false
}
//For text range
if let textRange = Range(range, in: textViewText) {
let updatedText = textViewText.replacingCharacters(in: textRange,
with: text)
return updatedText.count < 30 + 11 //11 characters for *My name is:*
}
}
return true
}
}
我有一个文本视图,我想让一些文本不可编辑,而其他文本可编辑。 对于前。我的文本视图有文本 "My name is: Sandesh Sardar"。所以我的名字应该是不可编辑的,其他文本应该是可编辑的。在 Swift 5 中有什么方法可以做到这一点?
这可以使用文本范围吗?意味着如果我有大的不可编辑的文本? 如果我有多个这样的文本视图,还有什么更好的方法吗?
或者我们如何在文本视图中的特定范围后停止编辑?
使用这段代码得到你的结果。这意味着如果现有文本是 My name is:
,则 textView
在编辑时不会 return true
。例如,如果您想在用户输入大约 30 个字符后停止,请在内部进行检查,如下所示。
extension ViewController: UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if let textViewText = textView.text {
if textViewText == "My name is:" && text == "" {
return false
}
//For text range
if let textRange = Range(range, in: textViewText) {
let updatedText = textViewText.replacingCharacters(in: textRange,
with: text)
return updatedText.count < 30 + 11 //11 characters for *My name is:*
}
}
return true
}
}