2016-01-21 44 views
4

我有一个简单的视图,其中有两个文本视图以及一个按钮。所有控件都垂直放置。我可以使用遥控器从一个控件导航到另一个控件。不过,我试图让下面的情况下工作:在UITextfield输入文本后以编程方式更改焦点

  1. 用户启动应用程序(重点是第一个文本框)
  2. 用户输入文本字段,并使用全屏键盘,然后她打“下一步”按钮
  3. 这个应用程序显示了第二个文本框(全屏键盘),类型的一些文字,点击‘完成’按钮
  4. 该应用程序离开全屏键盘和聚焦按钮

而步骤1-3开箱即用,以编程方式更改焦点(4)不起作用。下面是一些代码:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if(textField == self.textfieldB) { 
     self.activeView = self.textfieldB; 
     [self setNeedsFocusUpdate]; 
     [self updateFocusIfNeeded]; 
     return YES; 
    } 
    return NO; 
} 

- (UIView *)preferredFocusedView我回无论是存储在self.activeView(是的,它会返回按钮实例)。所有方法都按预期调用,但重点不会改变。我在这里做错了什么?

提前致谢!

回答

3

根据this developer forums thread的行为是故意的:

当解雇所呈现的视图控制器,就像一个全屏键盘,UIKit中会自动返回焦点回到它在哪里时视图控制器是第一次提出,如果观点仍然是可以调整的。这样焦点会自动返回到用户预期的位置。目前没有机制来覆盖这种行为。

在类似的情况下,我从键盘屏幕返回后,延迟焦点切换。这是一个丑陋的黑客攻击,我希望UIKit不会对此置评。

+0

我也面临同样的问题。感谢你的回答 –

相关问题