我有一个简单的UIViewController
和一个UISearchBar
,当视图加载时我希望搜索栏立即成为第一个响应者,以便键盘显示并且他们可以开始键入他们的查询马上。我尝试在viewWillAppear
如下运行,没有任何运气:
- (void)viewWillAppear:(BOOL)animated
{
[productSearchBar becomeFirstResponder];
[super viewWillAppear:animated];
}
我应该在becomeFirstResponder
上打电话给UISearchBar
或者我应该完全打电话给其他地方吗?
答案 0 :(得分:36)
将其移至-viewDidAppear
并且应该没问题。 -becomeFirstResponder
拉出键盘(如你所知),你不应该在屏幕前做动画。你可以得到奇怪的互动。
如果它根本没有做任何事情,那么几乎可以肯定productSearchBar
是一个IBOutlet,你忘了将其实际绑定到Interface Builder中的UISearchBar
。这是UI中“没有任何反应”的首要原因。
请注意,您不应该以这种方式访问您的ivars;你应该把它作为一个属性,只参考self.productSearchBar
。 Apple终于在Memory Management of Nib Objects中对此发布了正确的解释。切勿在访问者或-dealloc
之外访问您的ivars。此规则将为您节省大量的调试时间。