alt text http://img210.imageshack.us/img210/5992/searchdisplaycontroller.png
以下对象是否可自定义?
1. UISearchBar范围按钮(UISegmentedController)
2. UIResultsTableView
3.键盘(至少它是黑色的)
我在InterfaceBuilder中的UITableViewController中添加了一个UISearchDisplayController.通过添加searchBar: searchBar textDidChange: searchText为表和调用重新生成数据数组的方法,可以很容易地使其工作reloadData.
但是我想在下次用户触摸搜索栏时显示上一个搜索节目,因为触摸(X)并清除它比再次输入更容易.但我无法做到这一点.以下是我尝试过的代码:
- (void) searchBar: (UISearchBar *) searchBar textDidChange: (NSString *) searchText {
if( searchText && [searchText length] > 0 ) {
self.displayedRows = [[NSMutableArray initWithCapacity: 1];
for( NSString *l in self.allRows ) {
NSRange r = [l rangeOfString: searchText];
if( r.location != NSNotFound )
[self.displayedRows addObject: l];
}
[self.searchDisplayController.searchResultsTableView reloadData];
}
}
- (void) searchDisplayControllerWillBeginSearch: (UISearchDisplayController *) controller {
if( self.lastSearch && [self.lastSearch length] > 0 ) {
controller.searchBar.text = self.lastSearch;
[controller.searchResultsTableView …Run Code Online (Sandbox Code Playgroud) 我正在以一种非常规的方式使用UISearchViewController.
我的UISearchBar最初是隐藏的.当用户点击按钮时,我取消隐藏UISearchBar并激活UISearchViewController.我还设置了搜索栏的文本,并告诉搜索栏成为第一响应者.
问题是UISearchDisplayController创建的灰色叠加层仍然可见.除非我预设的文本被清除,并且用户开始重新输入,否则它不会消失.
self.searchDisplayController.searchBar.hidden = NO;
self.searchDisplayController.searchBar.text = @"term";
[self.searchDisplayController.searchBar becomeFirstResponder]; // this actually appears to activate everything
[self.searchDisplayController setActive: YES animated: YES]; // this activates but does not set the searchbar to 1st responder...
Run Code Online (Sandbox Code Playgroud)
为什么UISearchDisplayController继续显示它的灰色叠加,我该如何清除它?
我正在开发一个我希望实现搜索功能的iOS项目.我正在使用UISearchBar并且UISearchDisplayController我想UISearchBar暗中隐藏.当用户点击时UIBarButtonItem,搜索栏将出现并显示"becomeFirstResponder",而当用户点击Cancel搜索栏中的按钮时,它将消失.
出现的工作正常,但我有一个消失的问题.当用户点击Cancel按钮(searchBarCancelButtonClicked方法)时,我设法隐藏了搜索栏,但是当点击灰色(变暗)背景时,我无法隐藏搜索栏UISearchDisplayController.据我所知,没有方法可以检测到这个事件,所以有必要应用一些hack.你知道吗,或者什么是检测灰色背景的最佳方法?
iphone objective-c uisearchbar uisearchdisplaycontroller ios
我的服务器正在处理搜索查询时,我不想显示"无结果"文本.

我想出了包含标签的表格单元格的确切坐标,并试图覆盖它.
self.noResultsCoverView = [[[UIView alloc] initWithFrame:CGRectMake(
0.0,
44.0,
320.0,
43.0
)] autorelease];
self.noResultsCoverView.backgroundColor = [UIColor whiteColor];
[self.searchDisplayController.searchResultsTableView addSubview:self.noResultsCoverView];
Run Code Online (Sandbox Code Playgroud)
令我懊恼的是,我的封面位于桌面视图上方,但位于标签下方.我需要盖子在标签上方.searchResultsTableView::bringSubviewToFront没有用,这让我觉得这个标签根本就不是孩子searchResultsTableView.
顺便说一下,这个Stack Overflow的答案对我来说并不适用.它适用于第一次搜索,但在后续搜索中闪烁一个奇怪的黑色封面.
我前段时间写过一个使用导航控制器的应用程序.其中一个推送视图包含一个UISearchDisplayController和一个UISearchBar.代码完全适用于iOS 5.如果我将其编译为目标iOS 6,则在选择搜索栏时会出现键盘,但搜索栏似乎不接受/接收键盘输入; 但它确实接受Siri的输入,然后正确执行搜索.无论是否在加载视图时将搜索栏设置为第一响应者(ViewDidLoad方法),都会发生这种情况.如果我重新编译代码到目标iOS5它再次工作.
我有一个UITableview不占用整个屏幕(截图).在iOS 6中一切正常.但在iOS 7中,当用户搜索时,搜索结果表占用整个视图(屏幕截图).
为了解决这个问题,我尝试按照本答案中的说明手动设置框架.外观现在是正确的(屏幕截图),但现在显示搜索结果表时,左上角的"<"按钮不会收到点击事件.
似乎searchResultsTableView正在添加一个拦截触摸事件的全屏背景视图.为了证明这一点,我将此代码添加到didShowSearchResultsTableView:
controller.searchResultsTableView.superview.backgroundColor = [UIColor blueColor];`
Run Code Online (Sandbox Code Playgroud)
这个截图证实了我的假设.
如何修复此问题以允许"<"按钮接收点击事件?我想避免修改,controller.searchResultsTableView.superview以便我的更改不会在iOS的未来版本中中断.
iOS 7中的哪些变化导致这种行为开始发生?
我正在制作一个使用UITableViewController的应用程序,我正在尝试添加一个UISearchBarWithDisplayController.(我正在使用这个教程:http://www.appcoda.com/search-bar-tutorial-ios7/).我按照所有步骤操作,但是当我在搜索视图中按键盘上的字母时,应用程序崩溃,我收到此错误:
2014-05-28 19:11:03.850 Williams[1353:60b] *** Terminating app due to
uncaught exception 'NSUnknownKeyException', reason:
'[<__NSCFConstantString 0x100219d80> valueForUndefinedKey:]: this
class is not key value coding-compliant for the key name.'
*** First throw call stack: (0x186b8a950 0x1930901fc 0x186b8a5d4 0x1876db618 0x187624bdc 0x18766d8e8 0x18766d3d0 0x18766c1d4
0x18766c150 0x18766bf28 0x100038904 0x100038af8 0x189d6c558
0x189b890e8 0x189b8905c 0x189b72538 0x189d6c264 0x189b93a64
0x189d27a7c 0x189d26dfc 0x189d26ae4 0x187634a20 0x189b97e58
0x189d269ac 0x189b7d2f0 0x18770c5cc 0x186b4b044 0x186b4a3a0
0x186b48638 0x186a896d0 0x18c76dc0c 0x189bbafdc 0x10003970c
0x193683aa0) libc++abi.dylib: terminating with uncaught exception of
type NSException
Run Code Online (Sandbox Code Playgroud)
当我按下键盘上的一个字母并且像这样卡住时它会崩溃:

还有一点很奇怪的是,如果我在iOS模拟器中崩溃,它会给我一个不同的崩溃报告: …
我有iOS7及以下的工作应用程序
我使用UISearchDisplayController进行表格搜索.
问题:
iOS8中未显示搜索标题视图后.
如下图所示.
搜索之前:

搜索后:

我在TPSMastreViewController.m中添加以下代码
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *v = [[UIView alloc] init];
v.backgroundColor = [UIColor greenColor];
return v;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以从导航栏中的按钮激活UISearchDisplayController,而不是从Xcode中的对象库中拔出搜索栏控制器时获得的标准搜索栏.像日历应用中的此功能:
你可以得到一个按钮来触发这样的动作:
[self.searchDisplayController setActive:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)
但是你仍然需要搜索栏,它会从搜索栏的位置进行动画制作.理想情况下,我希望它像GIF一样从顶部进入.
任何帮助非常感谢.大卫.
ios ×4
iphone ×4
ios7 ×2
ios8 ×2
objective-c ×2
uisearchbar ×2
cocoa-touch ×1
ios6 ×1
uitableview ×1
xcode5 ×1
xcode6 ×1