UITabBarController canBecomeFirstResponder方法没有被调用
问题描述:
阅读http://nshipster.com/uikeycommand/之后,我想使用箭头键将标签之间的导航添加到我的应用程序。但我cuold没有设法接收UITabBarController内的按键。下面的相同代码块在UIViewController中工作,但在UITabBarController中工作。UITabBarController canBecomeFirstResponder方法没有被调用
当我试图调试时,甚至没有调用,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;
}
}
答
我想你应该覆盖的UITabBarController内VC的的canBecomeFirstResponder
方法,而不是标签栏控制器。这样你应该能够获得按键。
这项工作适合您吗?在我的情况下,最初添加'canBecomeFirstResponder'工作,但键盘用于移动到不同的UIViewController(它也具有相同的'canBecomeFirstResponder'和keyCommands)后,第二个视图控制器不响应键盘输入。它似乎不会将firstResponder状态转移到第二个VC。你的情况也是这样吗? –
不幸的是,我的情况和你一样。我认为,唯一能解决问题的方法就是回答下面的问题,但我没有尝试过,只是放弃了实现这个功能。 – mehmet6parmak