Прочитав http://nshipster.com/uikeycommand/, я захотел добавить навигацию между вкладками с помощью клавиш со стрелками в свой приложение. Но мне не удалось получить нажатия клавиш в UITabBarController. Тот же блок кода ниже работает в UIViewController, но в UITabBarController.
Когда я пытался выполнить отладку, переопределение canBecomeFirstResponder для UITabBarController даже не вызывалось. Я не нашел ничего полезного в документах Apple. Цените любую информацию, которая проясняет проблему.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let firstResponderResult = self.becomeFirstResponder()
println("became first responder \(firstResponderResult)")
}
override func canBecomeFirstResponder() -> Bool {
return true
}
override var keyCommands: [AnyObject]? {
return [
UIKeyCommand(input: UIKeyInputRightArrow, modifierFlags: UIKeyModifierFlags.allZeros, action: "rightArrowClicked:"),
UIKeyCommand(input: UIKeyInputLeftArrow, modifierFlags: UIKeyModifierFlags.allZeros, action: "leftArrowClicked:")
]
}
func rightArrowClicked(sender: UIKeyCommand) {
let currentIndex = selectedIndex;
if (currentIndex < viewControllers!.count - 1) {
selectedIndex = currentIndex + 1;
}
}
func leftArrowClicked(sender: UIKeyCommand) {
let currentIndex = selectedIndex;
if (currentIndex > 0) {
selectedIndex = currentIndex - 1;
}
}
canBecomeFirstResponder
изначально работает, но после того, как клавиатура используется для перехода к другому UIViewController (который также имеет те жеcanBecomeFirstResponder
и keyCommands), второй контроллер представления не отвечает на ввод с клавиатуры. Похоже, он не передает статус firstResponder второму ВК. Это верно и в вашем случае? - person Z S   schedule 11.11.2015