将 UITextField 添加到导航项的标题视图

Posted

技术标签:

【中文标题】将 UITextField 添加到导航项的标题视图【英文标题】:Add UITextField to title view of navigation item 【发布时间】:2014-07-26 22:30:37 【问题描述】:

如何将文本字段添加到导航项的标题视图并使其大小正确?

如果我使用这样的搜索栏执行此操作,效果很好,但我不知道如何让文本字段以与搜索栏相同的方式调整自身大小。

myViewController.navigationItem.titleView = [UISearchBar new];

【问题讨论】:

Objective C how to add textfield into navigation bar的可能重复 顺便说一句,这对我有用:UITextField *tf = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, 21.0)]; self.navigationItem.titleView = tf; [tf becomeFirstResponder]; 【参考方案1】:

正如我的评论所建议的,尝试以下,在我看来这就是你所追求的。

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, 21.0)];

self.navigationItem.titleView = textField;

[textField becomeFirstResponder];

【讨论】:

这对我不起作用。文本字段的宽度只有几个像素。我正在以编程方式创建所有内容。 正如你在上面看到的,这都是程序化的,不是吗? 好的,我试图从应用程序委托中执行此操作。如果您从视图控制器中的 -viewDidLoad 执行此操作,则此操作有效。 是的,这通常是你做事的方式 @BerryBlue 我很好奇你最初把它放在哪里【参考方案2】:
Class: ViewController: UISearchBarDelegate 

let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.searchController?.searchBar.delegate = self
navigationItem.searchController?.obscuresBackgroundDuringPresentation = false
navigationItem.searchController?.hidesNavigationBarDuringPresentation = false
navigationItem.searchController?.searchBar.placeholder = "Enter text here..."

【讨论】:

以上是关于将 UITextField 添加到导航项的标题视图的主要内容,如果未能解决你的问题,请参考以下文章

导航到另一个视图 iPhone sdk?

无法将 UITextField 添加到 UIScrollView

如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面

键盘可见时,将输入附件视图添加到UITextField

将 UITextField 添加到 UITableViewCell

如果通过附件视图添加到 UITableViewCell,UITextField 无法成为第一响应者