【发布时间】:2015-09-04 20:07:26
【问题描述】:
阅读http://nshipster.com/uikeycommand/ 后,我想在我的应用程序中使用箭头键在选项卡之间添加导航。但我不能设法在 UITabBarController 中接收按键。下面的相同代码块适用于 UIViewController 但 UITabBarController。
当我尝试调试时,甚至不会调用 UITabBarController 的 canBecomeFirstResponder 覆盖。我在苹果的文档上没有找到有用的东西。欣赏任何使问题变得清晰的信息。
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 状态转移到第二个 VC。你的情况也是这样吗? -
不幸的是没用,我的情况和你一样。我认为,唯一可行的方法是下面的答案,但我也没有尝试过,只是放弃了实现这个功能。
标签: ios swift uitabbarcontroller uiresponder becomefirstresponder