停止删除textview中的默认文本(Swift)

时间:2015-07-22 16:56:20

标签: ios swift uitextview

如果我有一个带有以下文字的UITextView:

“请完成此发送......”

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

更新:我能够做到这一点,以便用户无法删除初始文本,但有没有办法使它们无法在初始文本之前或在其中输入?感谢所有回答到目前为止的人!

更新:已解决。为了阻止人们在字符串之前和之内编辑,我只需添加

if range.location == 0 {
            return false
        }

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

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

2 个答案:

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