Я делаю заказное расширение клавиатуры для iOS 8 и безуспешно пытаюсь отразить текущее слово, набираемое на UILabel, сидящем на клавиатуре (думаю, автокоррекция). Пока что код, который я написал, отражает предложение перед курсором, а не так, как он записывается, но по мере перемещения курсора из одной позиции в другую. То, что я пытаюсь достичь, точно так же, как первый блок автосохранения на собственной клавиатуре. Кто-нибудь мог бы сказать мне, что я делаю неправильно?Как получить введенное текущее слово?
Код:
override func textWillChange(textInput: UITextInput) {
var tokens = (self.textDocumentProxy as! UITextDocumentProxy).documentContextBeforeInput .componentsSeparatedByString(" ") as NSArray
var lastWord = tokens.lastObject as! String
println(lastWord)
bannerView?.btn1.setTitle(lastWord, forState: .Normal)
}
Я попытался установить условие, согласно которому, если beforeCursor содержали либо пространство/период/запятую, чтобы установить название кнопки, как ""
но это не является эффективным в долгосрочной перспективе, поскольку мне нужно чтобы получить слова, чтобы иметь возможность сделать функцию автокоррекции.
Edit:
Я понял, как получить слово перед курсором (обновленный код выше), но не так, как обновить ярлык, как каждая буква добавляется. func textWillChange(textInput: UITextInput)
не работает. Это не она.
Спасибо!
Почему это избавиться от чисел, а также ? – cyril
См. NSCharacterSet, который я использую: NSCharacterSet.letterCharacterSet(), см. Https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCharacterSet_Class/ для альтернатив. – matthias