22

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

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

还有其他地方我应该打电话becomeFirstResponder还是UISearchBar应该完全打电话给其他地方?

4

1 回答 1

36

把它移到-viewDidAppear它应该没问题。-becomeFirstResponder拉起键盘(如您所述),并且在屏幕上之前您不应该做动画。你可以得到奇怪的互动。

如果它根本没有做任何事情,那么几乎可以肯定productSearchBar是一个 IBOutlet 并且您忘记了将它实际绑定到UISearchBarInterface Builder 中。这是 UI 中“什么都没有发生”的第一大原因。

请注意,您不应该以这种方式访问​​您的 ivars;您应该将其设为属性并仅引用self.productSearchBar. Apple 终于在他们的 Nib Objects 的内存管理中发布了对此的正确解释。永远不要在访问器之外访问您的 ivars 或-dealloc. 此规则将为您节省大量调试时间。

于 2010-02-16T00:06:42.510 回答