Доброго времени суток.
Пытаюсь "изобрести велосипед" и сделать аналог предикативного набора в custom keyboard. Процесс дошел до того, что в TopBanner клавиатуры я разместил три кнопки, по нажатию на которые печатается текст, отображенный на кнопках.
Но при этом когда нажимаешь на кнопку клавиатуры, нужно чтобы обновлялся текст на кнопке.
Собственно, вот код:
protocol updateBattonsTitels:class {
func updateButtons(sender: KeyboardKey)
}
class Catboard: KeyboardViewController {
var delegate: updateBattonsTitels?
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
NSUserDefaults.standardUserDefaults().registerDefaults([kCatTypeEnabled: true])
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func keyPressed(key: Key) {
let textDocumentProxy = self.textDocumentProxy
if let keyView = self.layout?.viewForKey(key) {
switch key.type {
case Key.KeyType.Character:
keyView.addTarget(delegate, action: "updateButtons:", forControlEvents: [.TouchDown, .TouchDragInside, .TouchDragEnter])
default:
break
}
}
}
И вторая часть с кнопками:
extension CatboardBanner: updateBattonsTitels {
func updateButtons ( sender: KeyboardKey)
{
lBatton.setTitle("75%", forState: UIControlState.Normal)
cBatton.setTitle("90%", forState: UIControlState.Normal)
rBatton.setTitle("54%", forState: UIControlState.Normal)
}
}
class CatboardBanner: ExtraView {
var delegate: insertBattonText?
var catSwitch: UISwitch = UISwitch()
var lBatton: UIButton = UIButton()
var cBatton: UIButton = UIButton()
var rBatton: UIButton = UIButton()
}
Код в сокращенном содержании, если нужно, могу расширенную, так сказать, версию выложить всего.
Проблема в том заключается, что при нажатии на кнопку
keyView.addTarget(delegate, action: "updateButtons:", forControlEvents: [.TouchDown, .TouchDragInside, .TouchDragEnter])
вроде и срабатывает, но на кнопках ничего не обновляется.
Как быть?