将 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 添加到导航项的标题视图的主要内容,如果未能解决你的问题,请参考以下文章
无法将 UITextField 添加到 UIScrollView
如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面