视图加载时使 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 需要额外点击才能成为第一响应者