查看加载时使UISearchBar成为第一个响应者

Joh*_*uff 22 iphone objective-c uiviewcontroller uisearchbar first-responder

我有一个简单的UIViewController和a UISearchBar,当视图加载时我想让搜索栏立即成为第一个响应者,以便键盘显示,他们可以立即开始键入他们的查询.我尝试在viewWillAppear下面这样做,没有任何运气:

- (void)viewWillAppear:(BOOL)animated
{
    [productSearchBar becomeFirstResponder];
    [super viewWillAppear:animated];
}
Run Code Online (Sandbox Code Playgroud)

难道还有其他的,我要打电话的地方becomeFirstResponderUISearchBar或者我应该是别的完全调用的东西吗?

Rob*_*ier 36

移动它-viewDidAppear,它应该没问题.-becomeFirstResponder拉起键盘(如你所知),你不应该在屏幕前做动画.你可以得到奇怪的互动.

如果它根本没有做任何事情,那么几乎可以肯定它productSearchBar是一个IBOutlet而你忘了将其与UISearchBarInterface Builder中的实际绑定.这是UI中"没有任何反应"的首要原因.

请注意,您不应该以这种方式访问​​您的ivars; 你应该把它作为一个财产,只参考self.productSearchBar.Apple终于在他们的Nib Objects内存管理中发布了正确的解释.切勿在访问者或访问者之外访问您的ivars -dealloc.此规则将为您节省大量的调试时间.