为什么当 UIViewController 第二次被推送到导航控制器时,UISearchBar 没有获得焦点并且键盘没有出现?似乎整个视图中没有任何元素具有焦点。
我的用例:我有 2 个视图控制器:A 和 B。转换是 A->B。A、B 被推送到导航控制器。
- 当我第一次显示 B时,焦点设置为搜索栏并且键盘出现。确定。
- 然后我回到A。又从A->B。现在第二次没有焦点,也没有出现键盘。这是错误的。
我的代码:在 B UIViewController IBOutlet 上创建到搜索栏的连接:
@property (weak, nonatomic) IBOutlet UISearchBar *mySearchBar;
还设置了 mySearchBar 的委托。我在方法中将焦点放在 B UIViewController 中的搜索栏上viewDidAppear
:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self performSelector:@selector(setCorrectFocus) withObject:NULL afterDelay:0.2];
}
-(void) setCorrectFocus {
[self.mySearchBar becomeFirstResponder];
}
控制器之间的转换是在如下代码中手动完成的:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
AController *a = [storyboard instantiateViewControllerWithIdentifier:@"A"];
[self.navigationController pushViewController:a animated:NO];