Я пытаюсь сделать свою собственную клавиатуру, изучая Swift. На моей клавиатуре каждый ключ представляет собой отдельный UIView с UILabel в нем. Каждый UILabel имеет тег 1. Сначала я кодировал вход каждого ключа вручную, но я решил оптимизировать код и установить функцию, которая принимает текст UILabel и устанавливает его как входной сигнал, но по какой-то причине клавиатура сбой (нет журнала
Пользовательская сбой клавиатуры после попытки установить ввод текста в качестве названия метки в каждой клавише
Примечание 1: Один ключ показано упростить вещи
Примечание 2: Этот жест определяется в другом месте, он не хотел причиной аварии
Вот мой код:
override func viewDidLoad() {
super.viewDidLoad()
var Qkey = UIView(frame: CGRectMake(3, 11, 26, 38))
var Q = UILabel(frame: CGRectMake(5, 8, 17, 27))
Q.tag = 1
Q.text = "Q"
Qkey.addSubview(Q)
tapRec1.addTarget(self, action: "keyPressed:")
Qkey.addGestureRecognizer(tapRec1)
self.view.addSubview(Qkey)
}
func keyPressed(sender: UIView){
let theLabel : UILabel! = sender.viewWithTag(1) as UILabel;
var string = theLabel.text!
(textDocumentProxy as UIKeyInput).insertText("\(theLabel)")
}
Ошибки наблюдается в журнале:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITapGestureRecognizer viewWithTag:]: unrecognized selector sent to instance 0x798bba30'
По сути то, что я пытаюсь сделать, это для UIView (отправитель), на котором функция вызывается, чтобы захватить все подвиды (UILabels) с тегом 1, и установите их текст как ввод на клавиатуре. Даже делая это на ключевых аварий :(Любая помощь очень ценится. Спасибо!
, какая линия причиной аварии – Indrajeet
@Indrajeet это одна функ keyPresse d1 (отправитель: UIView) { var theLabel: UILabel = sender.viewWithTag (1) как UILabel; (textDocumentProxy as UIKeyInput) .insertText (theLabel.text!) } – cyril
Сделано переменным theLabel неявным. Это помогает вам – Indrajeet