Swift 4:如何在UITextView中每行只设置一个单词,并为每行创建一个数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 4:如何在UITextView中每行只设置一个单词,并为每行创建一个数组相关的知识,希望对你有一定的参考价值。

我创建了一个UITextView,我希望每行只有一个单词,这样每次按空格键时它实际上都会返回文本。如何使空格按钮返回而不是实际间隔文本?另外,有没有办法记录每个单词以创建自定义数组?这是我现在的代码:

@IBAction weak var wordView : UITextView!
@IBLabel weak var label : UILabel!

var words : [String] = []

override func viewDidLoad() {
    super.viewDidLoad()
    let endEditingTapGesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing(_:)))
        endEditingTapGesture.cancelsTouchesInView = false
        view.addGestureRecognizer(endEditingTapGesture)
}

@IBAction func button(_ sender: Any) {
    getArray()
}

func getArray() {
    for _ in words {
        words.append(wordView.text)
    }
}

每次按下按钮时,按钮都应该向数组添加单词...我不确定这是最好的解决方案......任何帮助?

答案

如果您正在使用委托输入,则可以使用委托。

这是示例代码。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    let oldText = NSString(format: "%@", textView.text)
    var newText = oldText.replacingCharacters(in: range, with: text)
    newText = newText.replacingOccurrences(of: " ", with: "\n")
    newText = newText.replacingOccurrences(of: "-", with: "\n")

    textView.text = newText

    let myWordArr = textView.text.components(separatedBy: "\n")
    print(myWordArr)

    return false
}

不要忘记设置委托。

另一答案

尝试用新行替换空格使用textView委托方法,如下所示,

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    //checks if new text is white space
    if (text == " ") {
        if (textView.text?.characters.last == "\n") {
            // this will prevent multiple new lines
            return false
        }
        let newText = (textView.text as NSString).replacingCharacters(in: range, with: "\n")
         textView.text = newText
        return false
    }
    return true
}

得到所有单词的数组

let allWords = yourTextView.text.components(separatedBy: "\n")

以上是关于Swift 4:如何在UITextView中每行只设置一个单词,并为每行创建一个数组的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 UITableView 将一个单元格设为 UITextView

Swift 4:@IBOutlet UITextView 崩溃

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

以编程方式在 UITableViewCell 下添加 UITextView 和 UIImageView Swift 4

Swift:如何在 UITableView 中定位标记的 UITextView?

Swift:更改 UItextView 中文本的按钮?