【问题标题】:How to keep some text non editable and some editable in textview swift?如何在textview swift中保持一些文本不可编辑和一些可编辑?
【发布时间】:2020-08-05 08:38:12
【问题描述】:

我有一个文本视图,我想保留一些文本不可编辑和其他文本可编辑。 例如。我的文本视图有文本“我的名字是:Sandesh Sardar”。所以我的名字应该是不可编辑的,其他文本应该是可编辑的。在 Swift 5 中有什么方法可以做到这一点吗?

这是否可以使用 textrange.意味着如果我有大的不可编辑的文本? 如果我有多个这样的文本视图,还有什么更好的方法吗?

或者我们如何在 textview 中的某个范围后停止编辑?

【问题讨论】:

    标签: ios swift textview


    【解决方案1】:

    使用这段代码得到你的结果。这意味着如果现有文本为My name is:,则textView 在编辑时不会返回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: 字符串还是包括该字符串来询问文本范围?请更新您的问题,以便我做出相应的更改,@SandeshSardar。
    • 检查编辑后的答案,带有 //For text range 标签。
    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多