使用iPhone SDK 3.0,我希望允许带有(可选)完成选项的文本输入,这些选项在输入时出现,即也允许自由格式输入.因此我使用UISearchBar(具有文本更改事件)和UISearchDisplayController来呈现选项.
问题是我想要DONE按钮说DONE而不是SEARCH,但我找不到设置方法.显然我觉得我遗漏了一些东西,或者SDK API的Interface Builder会有一些属性要设置.
我已经看到其他应用程序(在商店中)已经达到了我想要的结果(自由格式输入,完成,完成按钮)所以也许有一种我缺少的替代方法.提前感谢任何指针.
如何删除UISearchBar的内部阴影?
我试过了,[[searchBar layer]setShadowOpacity:0]但似乎没有做任何事情.
使用UISearchDisplayController,我显示UIView在底部,因此导致在滚动表时隐藏过滤的数据.我使用contentInset属性在底部显示数据.
我的问题是,即使我重置UIEdgeInsetsZero ,NSStringFromUIEdgeInsets(self.searchDisplayController.searchResultsTableView.contentInset)也会显示该bottom值216.
当我进行多次搜索时,滚动后看不到更多数据:

我看到一个奇怪的情况.我在导航栏中放了一个搜索栏,并将UISearchDisplayController与搜索栏相关联.现在,搜索显示控制器倾向于在用户点击搜索栏时隐藏导航栏(因此,也隐藏搜索栏).为了解决这个问题,我将UISearchDisplayController子类化并实现了以下代码: -
- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
[super setActive: visible animated: animated];
[self.searchContentsController.navigationController setNavigationBarHidden: NO animated: NO];
}
Run Code Online (Sandbox Code Playgroud)
现在,这解决了原来的问题.我能够搜索并导航到其他控制器.
但是,假设我在视图控制器A上进行搜索,然后单击搜索结果,然后将视图控制器B推送到导航堆栈.现在,如果我弹出视图控制器B并返回A,那么我的导航栏就会消失.看起来搜索显示控制器处于活动状态,因此隐藏了导航栏.
如果我使搜索显示控制器处于非活动状态,然后按下视图控制器B然后弹出它,则会出现导航栏.
那么,当我从导航堆栈弹出视图控制器B时,我的搜索显示控制器是否有任何方式可以保持活动状态并且导航栏不会消失?
我的目标是iOS6
(这是一个很长的代码,所以不知道我应该在这里发布什么).
我有一个UISearchDisplayController,它在iOS7下表现得很奇怪.我第一次进行搜索时,一切正常,UISearchResultsTableView正确显示结果.
问题是我第二次进行搜索(在解除表格之后),空白行(看起来像一个单元格)被添加到搜索结果表的顶部:

然后,每个后续搜索都会在表格的顶部添加另一个空白行,依此类推,依此类推.
这是代码:
//Setup the search bar.
searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 360.0f, 44.0f)];
UIBarButtonItem * searchBarButton = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
searchBar.delegate = self;
controller = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBar contentsController:self];
controller.searchResultsDataSource = self;
controller.searchResultsDelegate = self;
self.tabBarController.navigationItem.rightBarButtonItems = @[searchBarButton];
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
if (isLoading) {
return;
}
[self filter : searchText];
[controller.searchResultsTableView reloadData];
}
- (void)filter : (NSString *)text {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(name CONTAINS[cd] %@ OR number CONTAINS[cd] %@)", text, text];
searchResults = [standArray filteredArrayUsingPredicate:predicate]; …Run Code Online (Sandbox Code Playgroud) 我有一个searchDisplayController,我希望结果大胆出现在搜索栏中输入的任何字符串.

在这种情况下,搜索结果的预期行为应该在搜索结果中突出显示字符串"Bla"(或更改为不同的样式 - 斜体等)
我试过调查NSMutableAttributedString和NSAttributedString,但是仍然有点不确定如何在搜索结果中更改字符串的样式
objective-c uitableview uisearchbar uisearchdisplaycontroller ios
我有以下UITableViewController+ UISearchBar设置
@interface FeedTableView : UITableViewController <UISearchBarDelegate,UISearchDisplayDelegate>
{
NSMutableArray *ArrayDatiOriginali;
NSMutableArray *searchData;
UISearchBar *searchBar;
UISearchDisplayController *searchDisplayController;
}
Run Code Online (Sandbox Code Playgroud)
在加载方法下面
- (void)viewDidLoad
{
[super viewDidLoad];
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchDisplayController.delegate = self;
searchDisplayController.searchResultsDataSource = self;
searchDisplayController.searchResultsDelegate=self;
self.tableView.tableHeaderView = searchBar; tableView.
}
Run Code Online (Sandbox Code Playgroud)
当我使用UISeach时选择数据/行
if(tableView==self.searchDisplayController.searchResultsTableView)
{
NSLog(@"Riga corrente: %i",indexPath.row);
appo=[searchData objectAtIndex:indexPath.row];
}
Run Code Online (Sandbox Code Playgroud)
它适用于过滤表视图.
但如果:
然后
didSelectRowAtIndexPath 被解雇但是在cellForRowAtIndexPath方法中表达
if(tableView == self.searchDisplayController.searchResultsTableView)返回FALSE
如果UISearchView是活跃的
有任何想法吗?
iphone objective-c uitableview uisearchbar uisearchdisplaycontroller
我使用plist文件来获取显示在tableview中的站点列表
plist看起来像这样:
<array>
<dict>
<key>site</key>
<string>http://yahoo.com</string>
<key>title</key>
<string>Yahoo</string>
</dict>
<dict>
<key>site</key>
<string>http://google.com</string>
<key>title</key>
<string>Google</string>
</dict>
//...etc
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)
我没有问题地显示:
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TestData" ofType:@"plist"]];
[self setContentsList:array];
Run Code Online (Sandbox Code Playgroud)
*问题是当我尝试搜索内容并且我想从搜索结果中获取valueforkey @"site"以在didSelectRowAtIndexPath中使用它:*
NSMutableArray *contentsList;
NSMutableArray *searchResults;
NSString *savedSearchTerm;
---------------------
- (void)handleSearchForTerm:(NSString *)searchTerm
{
[self setSavedSearchTerm:searchTerm];
if ([self searchResults] == nil)
{
NSMutableArray *array = [[NSMutableArray alloc] init];
[self setSearchResults:array];
[array release], array = nil;
}
[[self searchResults] removeAllObjects];
if ([[self savedSearchTerm] length] != 0)
{
for (NSString *currentString in …Run Code Online (Sandbox Code Playgroud) iphone xcode uiwebview nsmutablearray uisearchdisplaycontroller
如何在UISearchDisplay控制器中使用文本字段而不是搜索栏?
我想通过摆脱放大镜图标和自定义背景来完全自定义搜索栏.同时停止调整大小并调出"取消"按钮.我看到一些人使用hacky方法通过编辑不应该编辑的搜索栏api的部分来做到这一点.因此,在这个级别上进行自定义的更可接受的方式似乎是使用UITextfield而不是UISearchBar.但网上似乎没有关于这样做的任何信息!
如果我使用文本字段,当文本更改以使UISearchDisplayController工作时,我需要调用哪些方法?
iphone uitextfield uisearchbar uisearchdisplaycontroller ios
我有一个viewController,其中包含一个tableView; 我在表的标题中有一个UIView,并将searchDisplayController拖动到视图中,同时还有一个分段控件.(由于某些原因,我不想使用范围,因为你想知道).现在我的问题是,即使用户在searchBar中输入,检查cellForRow中的(tableView == self.searchDisplayController.searchResultsTableView)也会失败.我不知道为什么??!!据我所知,当您将控制器拖动到视图中时,所有代理等都会自动连接.只有当用户按下键盘上的搜索按钮然后滚动表格时,检查才会生效,我知道这不是它应该如何工作!?
任何人都可以了解这里可能发生的事情吗?这让我疯狂!
非常感谢
儒勒
ios ×7
uisearchbar ×6
iphone ×4
objective-c ×4
uitableview ×2
hide ×1
ios7 ×1
scroll ×1
uikit ×1
uitextfield ×1
uiwebview ×1
xcode ×1