Swift 4: Как установить только одно слово на строку в UITextView и создать массив с каждой строкой - PullRequest
0 голосов
/ 01 марта 2019

Я создал 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)
    }
}

Кнопка должна добавлять слова в массив каждый раз, когда я нажимаю на нее ... Я не уверен, что это лучшее решение ... любая помощь?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете использовать делегат, если вы принимаете ввод от одного и того же.

вот пример кода.

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
}

не забудьте установить делегат.

0 голосов
/ 01 марта 2019

попробуйте это заменить пробел новой строкой, используйте метод делегата 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")
...