ios - 停止删除 TextView 中的默认文本(Swift)

标签 ios swift uitextview

如果我有一个包含以下文本的 UITextView:

“请完成此发送...”

目的是允许用户编辑 TextView ,以便他们可以完成句子,我怎样才能使他们无法删除开始编辑之前存在的文本,即“请完成此发送” “?

更新:我已经能够使用户无法删除初始文本,但是有什么方法可以使他们无法在初始文本之前或内部键入?感谢到目前为止所有回答的人!

更新:已解决。为了阻止人们在字符串之前和内部进行编辑,我简单地添加了

if range.location == 0 {
            return false
        }

if (0 < range.location && range.location < count(string.utf16)) == true {
            return false
        }

到shouldChangeTextInRange函数。谢谢大家的帮助!

最佳答案

这样您就可以阻止用户删除初始文本:

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
    }
}

关于ios - 停止删除 TextView 中的默认文本(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569457/

相关文章:

objective-c - NSMutableDictionary 实例变量不在循环外保留键值

javascript - Cordova 仅在恢复事件后执行插件

swift - 应用程序崩溃 - dyld : Symbol not found: _OBJC_CLASS_$_UITraitCollection

ios - 即使添加了 View ,UIViewContorller 的触摸事件仍然会收到

ios - iOS 9.0 中的 UITextview 字体为零

ios - 带有三个点的 UITextview 剪辑?

iphone - 混合大型四边形对性能的影响

ios - 添加 Facebook URL 方案后 URL 方案停止工作

ios - WKWebKit View 在 iOS 10 上重叠状态栏,但在 iOS 11 上不重叠

swift - UITextView swift 中字符串的粗体部分