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

时间:2010-02-15 23:46:13

标签: objective-c iphone uiviewcontroller uisearchbar first-responder

我有一个简单的UIViewController和一个UISearchBar,当视图加载时我希望搜索栏立即成为第一个响应者,以便键盘显示并且他们可以开始键入他们的查询马上。我尝试在viewWillAppear如下运行,没有任何运气:

- (void)viewWillAppear:(BOOL)animated
{
    [productSearchBar becomeFirstResponder];
    [super viewWillAppear:animated];
}

我应该在becomeFirstResponder上打电话给UISearchBar或者我应该完全打电话给其他地方吗?

1 个答案:

答案 0 :(得分:36)

将其移至-viewDidAppear并且应该没问题。 -becomeFirstResponder拉出键盘(如你所知),你不应该在屏幕前做动画。你可以得到奇怪的互动。

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

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