我有一个UISearchBar,它充当表视图的实时过滤器.当键盘通过endEditing:解除时,查询文本和灰色圆形"清除"按钮保持不变.从这里,如果我点击灰色的"清除"按钮,键盘会在文本被清除时重新出现.
我该如何防止这种情况?如果键盘当前未打开,我希望该按钮在不重新打开键盘的情况下清除文本.
当我点击清除按钮时,会调用一个协议方法.但是向UISearchBar发送resignFirstResponder消息对键盘没有任何影响.
如果我设置了displaysSearchBarInNavigationBar = YES在viewDidLoad搜索栏将在导航栏时,视图显示出来.但是当我触摸栏按钮项目时,我想在导航栏顶部显示搜索栏.这就像下图
普通导航栏:

单击右侧栏按钮项后,在导航栏顶部的
搜索栏
我有一个searchBar我在tableviewcontroller中设置.我引用了这个类似的问题UISearchBar在UITableView重新出现之后无法成为第一响应者,但仍然无法将其设置为第一响应者.在.h文件中:
@property (strong, nonatomic) UISearchController *searchController;
@property (strong, nonatomic) IBOutlet UISearchBar *searchBar;
Run Code Online (Sandbox Code Playgroud)
在视图didload中:
self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
self.tableView.tableHeaderView = self.searchController.searchBar;
Run Code Online (Sandbox Code Playgroud)
并在viewDidAppear:
-(void)viewDidAppear:(BOOL)animated {
[self.searchController setActive:YES];
[self.searchController.searchBar becomeFirstResponder];
[super viewDidAppear:animated];
}
Run Code Online (Sandbox Code Playgroud)
当我转向视图时,searchBar会动画,但不会出现键盘.
objective-c uisearchbar first-responder ios uisearchcontroller
我的问题已在标题中指明:我想摆脱底部绘制的黑线UISearchBar.有任何想法吗?
这是我的意思的图像:

更新:
我认为线是部分UITableView的tableHeaderView.我仍然不知道如何删除它.
通常,UISearchDisplayController在激活时会使tableView变暗并聚焦searchBar.只要在searchBar中输入文本,它就会创建一个searchResultsTableView,它在searchBar和键盘之间显示.当第二个UITableView被加载/显示/隐藏/卸载时,将调用searchDisplayController的委托.通常它会在输入时显示实时搜索结果或自动完成条目.
在我的应用程序中,我想搜索Web服务,我不想为用户输入的每个字母调用webservice.因此,我想完全禁用searchResultsTableView并在输入文本时保持暗灰色覆盖.然后,一旦他点击搜索按钮,我就会触发搜索(带有加载屏幕).
只返回searchResultsTableView的零行看起来不太好,因为它显示一个带有"无结果"消息的空searchResultsTableView.我试图在它出现时隐藏表(searchDisplayController:didLoadSearchResultsTableView:),但是黑色的灰色叠加层也是隐藏的,这样底层的tableView再次完全可见.
除了从头开始重新创建UISearchDisplayController功能之外的任何想法?
有没有任何想法或代码示例如何更改UISearchBar的占位符文本的文本颜色?
我是Swift的新手,我正在尝试为我UITableView的UIViewController类添加搜索功能.我google了很多,发现UISearchDisplayController已被弃用并被UISearchController取代.当我试图搜索教程时,我没有找到任何特别的UITableView.其中一些是为了实施UITableViewController.所以这是我的问题:
我们可以实现UISearchController的UITableView是在一个UIViewController班?(我想我们可以)
如果可以,请转换用Objective-C编写的这些代码行.或者,如果有一些非常好的教程,请告诉我.
@property (strong, nonatomic) UISearchController *searchController;
UITableViewController *searchResultsController = [[UITableViewController alloc] init];
// Init UISearchController with the search results controller
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
// Link the search controller
self.searchController.searchResultsUpdater = self;
Run Code Online (Sandbox Code Playgroud)编辑: 我正在尝试将搜索结果更新程序分配为as
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchResultsUpdating {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.blackColor()
self.addTableViewWithSection()
self.searchResultsController = UITableViewController()
var controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = …Run Code Online (Sandbox Code Playgroud) 如何在UISearchBar中以编程方式触发取消按钮,就像你点击了取消按钮一样?
我在UITableView的顶部有一个UISearchBar,在搜索之后,当有人选择一行时,我想在UISearchBar中以编程方式触发取消按钮?
编辑:没有用户交互.

我在UISearchBar视图下直接删除1px边框时遇到问题.现在它看起来与我的完成按钮视图不匹配.我试过了:
searchBar.layer.borderWidth = 0;
searchBar.layer.shadowOpacity = 0;
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有奏效.有任何想法吗?
uisearchbar ×10
ios ×7
iphone ×4
objective-c ×3
appearance ×1
ipad ×1
keyboard ×1
placeholder ×1
swift ×1
uikit ×1
uitableview ×1
uiview ×1
xcode ×1