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; 
    } 
} 
+0

这项工作适合您吗?在我的情况下,最初添加'canBecomeFirstResponder'工作,但键盘用于移动到不同的UIViewController(它也具有相同的'canBecomeFirstResponder'和keyCommands)后,第二个视图控制器不响应键盘输入。它似乎不会将firstResponder状态转移到第二个VC。你的情况也是这样吗? –

+0

不幸的是,我的情况和你一样。我认为,唯一能解决问题的方法就是回答下面的问题,但我没有尝试过,只是放弃了实现这个功能。 – mehmet6parmak

我想你应该覆盖的UITabBarController内VC的的canBecomeFirstResponder方法,而不是标签栏控制器。这样你应该能够获得按键。