Я сделал приложение для калькулятора (swift), и я настроил некоторые UIKeyCommands, чтобы, если у пользователя есть клавиатура Bluetooth, они могут вводить цифры/символы в калькулятор ,UIKeyCommand не отключен при вводе текста в текстовое поле (Swift)
Они работают так:
UIKeyCommand(input: "4", modifierFlags: [], action: "TypeFourInCalculator:")
func TypeFourInCalculator(sender: UIKeyCommand) {
btn4Press(UIButton)
}
Это все работало хорошо, добавив четыре в калькулятор, когда пользователь нажал на четыре ключа (даже если сам калькулятор не имеет текстового поля). Тем не менее: у меня также есть несколько стандартных текстовых полей, и я хочу, чтобы UIKeyCommands останавливались, когда пользователь входит в одно из этих текстовых полей (так что они могут снова набирать клавиатуру BT снова). Без отключения UIKeyCommands, ввода результатов в функции калькулятора и ввода текста в текстовое поле.
Так что я попытался это в попытке отключить UIKeyCommands, когда текстовое поле становится первым ответчиком:
let globalKeyCommands = [UIKeyCommand(input: "4", modifierFlags: [], action: "TypeFourInCalculator:"), UIKeyCommand(input: "5", modifierFlags: [], action: "TypeFiveInCalculator:")]
override var keyCommands: [UIKeyCommand]? {
if powertextfield.isFirstResponder() == false { // if the user isn't typing into that text field
return globalKeyCommands // use key commands
} else { // if the user is typing
return nil // disable those UIKeyCommands
}
Это работает, но иногда все же часто не работает. Если пользователь еще ничего не набрал с помощью клавиатуры BT (т. Е. Не активировал команды клавиш, я думаю), они могут набирать клавиатуру BT, как обычно, в текстовое поле. Но если они уже вводили числа в калькулятор через UIKeyCommand, они не могут вводить текстовое поле (ну, иногда оно работает с нормальным поведением, иногда оно терпит неудачу, как и до того, как я добавил этот предупредительный код). Типированный текст просто не отображается в этом текстовом поле, и вместо этого он просто вызывает команду калькулятора.
Итак, что я могу сделать, чтобы отключить эти UIKeyCommands, когда пользователь начинает вводить в обычном текстовом поле?
Я бы использовал некоторую регистрацию, чтобы узнать, когда запрашивается 'keyCommands', чтобы убедиться, что она обновляется, когда вы думаете, что она обновляется. – sschale
Ответ ниже был действительно полезным, поэтому благодарит Криса. Если кто-то останавливается здесь, нужна какая-либо помощь, просто напишите ниже, и я могу вам помочь. – owlswipe