视图加载时使 UISearchBar 成为第一响应者

Posted

技术标签:

【中文标题】视图加载时使 UISearchBar 成为第一响应者【英文标题】:Make UISearchBar first responder when View Loads 【发布时间】:2010-02-15 23:46:12 【问题描述】:

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

- (void)viewWillAppear:(BOOL)animated

    [productSearchBar becomeFirstResponder];
    [super viewWillAppear:animated];

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢 Rob,成功了。内存管理上的链接也很有帮助,我会修复它。

以上是关于视图加载时使 UISearchBar 成为第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 成为第一响应者后,UITableView 不会调整大小

UISearchController 需要额外点击才能成为第一响应者

UISearchBar 在尝试选择 UICollectionViewCell 时退出第一响应者

第一响应者时 UISearchBar 上的平移手势

为啥从搜索栏退出键盘后会留下 UIToolbar?

在alerview被解雇后如何使webview成为第一响应者