标签: uisearchbardelegate

是不是可以将UISearchBar放在UITableView标头中?

我想完成这个:

考虑在其标题上带有搜索栏的表格视图.每当搜索字符串时,都会刷新表格视图.

我有2节课

TableViewController(UIViewController子类)

包含UITableView - 显示其表格

从Header类(UIToolBar子类)加载表的标题视图

.

Header(UITableView的标题)
- 包含UISearchBar及其委托

UISearchBarDelegates在TableViewController中回调函数

那叫

- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation  
Run Code Online (Sandbox Code Playgroud)

这会导致App崩溃

函数调用栈帧是如下

[UITableView reloadSections:withRowAnimation:]  
[TableViewController functionThatCallsReloadSection]  
[Header searchBarSearchButtonClicked:]  
Run Code Online (Sandbox Code Playgroud)

reloadSection导致应用程序崩溃.任何想法为什么会这样发生?

是因为在重新加载表视图头时,委托函数仍然在堆栈上处于活动状态?

我没有改变任何与tableview相关的事情(行数或部分数没有变化).我想做的就是重新加载表视图.

编辑:我试图在iPad上做所有这些事情,它提供了一个popover同时使用UISearchDisplayController,我不想使用.我已经有一个表格视图,我想刷新一旦输入文本和搜索按钮被击中,使用搜索代表.唯一的问题是,一旦我在UISearchBar的搜索委托中调用[UITableView reloadSection:](UISearchBar位于我想要重新加载的UITableView的标题上),应用程序崩溃了.

uitableview uisearchbar uisearchbardelegate reloaddata

8
推荐指数
1
解决办法
2105
查看次数

在失去对uisearchbar的关注时辞职键盘

我正在我的应用程序的导航栏中创建一个UISearchBar选项.我的应用包含多个视图和子视图.我有这个主视图,其他3个观点.其中一个是空的(现在),另外两个有关于它们的表格视图.

当我正在进行实际搜索或者在uisearchbar外触摸/点击时,我希望我的键盘能够在我搜索和隐藏时显示.我根据需要使用searchbardelegate.

我可以通过以下方式使用[searchBar resignFirstResponder]隐藏键盘.

  • 当我按下返回键时.
  • 当我手动取消搜索时
  • 当我按任何键盘按钮进行搜索或取消时.
  • 当我触摸屏幕的空白部分时

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {    
        UITouch *touch = [[event allTouches] anyObject];
        if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) {
            [mySearchBar resignFirstResponder];
        }
        [super touchesBegan:touches withEvent:event];
    }
    
    Run Code Online (Sandbox Code Playgroud)

我似乎无法做的是让它回应我的2个表格中的一个.或者当我重新填充主视图以包含完全不同的东西时.

我曾尝试更改touchesbegan方法以在触摸tableviews时重新调整搜索栏,但它到目前为止还没有工作.

亲爱的朋友先生,我已经尝试了其他几件事.谷歌,但这似乎是我需要的其他东西.

任何人都有任何想法,我可以做些什么来解决这个问题?

编辑:看来这样,当使用断点时,touchesbegan-method会响应backgroundview但当我触摸其中一个tableviews或导航栏(包含uisearchbar)时它不会响应.

cocoa-touch objective-c uisearchbar uisearchbardelegate

7
推荐指数
1
解决办法
1万
查看次数

UISearch栏没有调用searchBarTextDidBeginEditing

我有一个简单的视图控制器的UISearchBaruitable.我的问题是,当点击搜索栏时,我看到委托函数searchBarShouldBeginEditing被调用但不是searchBarTextDidBeginEditing(并且因为该键盘未打开且搜索不可编辑)

我试图实现委托函数searchBarShouldBeginEditing 返回YES,将searchbar设置为第一响应者,但是我没办法调用searchBarTextDidBeginEditing ...

知道会发生什么事吗?

一些代码:

或者Controller.h

@interface ViewController : UIViewController <UISearchBarDelegate>
{
   UISearchBar * searchbar;
}

@property (nonatomic, retain) IBOutlet UISearchBar* searchbar;

@end
Run Code Online (Sandbox Code Playgroud)

Controller.m或者

@synthesize searchbar;

- (BOOL)respondsToSelector:(SEL)sel {
    NSLog(@"Queried about %@", NSStringFromSelector(sel));
    return [super respondsToSelector:sel];
}

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarShouldBeginEditing -Are we getting here??"); 
    return YES;  
}  
-(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarTextDidBeginEditing -Are we getting here??");  
}
Run Code Online (Sandbox Code Playgroud)

我的班级有很多代码(这肯定会影响搜索栏)但是如果有人遇到类似搜索栏的问题,那么它的响应就会非常苛刻;)

我试着只使用搜索栏进行简单的应用程序,显然它有效...

编辑:

测试了一下我发现它与uisearchbar没有关系,因为我添加了一个TextField得到相同的结果(只是调用了textFieldShouldStartEditing委托函数)

应用程序在UITabBar cotroller中有所有视图控制器,但我认为这不会导致所有这些混乱......

EDITING2:

真奇怪的行为:将IBAction函数设置为UITextfield的TouchDown事件可以很好地工作,但将IBAction函数设置为EditingDidBegin永远不会被触发... …

uisearchbar uisearchbardelegate ios

6
推荐指数
1
解决办法
8658
查看次数

在iOS 7上双击带有搜索委托的UISearchBar会导致UISearchBar消失

我们在表格标题中有一个搜索栏.当用户在iOS 7上快速点击两次时,它会消失.有没有人有任何建议我们做错了什么?

uisearchbar uisearchbardelegate uisearchbardisplaycontrol ios7

6
推荐指数
2
解决办法
2484
查看次数

如何将storyBar的searchBar分配给searchController的searchBar属性

当我添加my searchBaras headerViewtableView,所有委托方法都按预期触发.

  1. self.myTableView.tableHeaderView = self.searchController.searchBar;

但是如果我从StoryBoard中获取searchBar IBOutlet并将其分配给self.searchController.searchBar,那么委托方法不会被触发!

  1. _mySearchBar = self.searchController.searchBar;

我也尝试将其嵌入mySearchBar到视图中然后分配:

  1. _mySearchBarView = self.searchController.searchBar; 但没有成功!

难道我做错了什么

objective-c uisearchbar uisearchbardelegate ios

6
推荐指数
1
解决办法
1031
查看次数

在NSPredicate更改后使用NSFetchedResultsControllerDelegate更新TableView节和行

有没有办法在更改fetchedResultsControllers NSpredicate(并执行提取)后更新UITableView节和行?我想在我的searchBar中的searchText发生更改时使用controllerWillChangeContent委托方法来更新我的表.

目前在我的应用程序中,只有在coredata发生更改时才会调用这些委托方法.不是在更改resultsController谓词和执行提取时.

如果我只是调用[ self.tableView reloadData]在每个文本更改上,没有动画,它会阻止体验.

或者我应该做一些完全不同的事情来更新每个搜索文本条目更改的tableView内容?

iphone nspredicate nsfetchedresultscontroller uisearchbardelegate

5
推荐指数
1
解决办法
1114
查看次数

searchBarSearchButtonClicked没有开火

我研究过这个问题.看起来这是一个常见的问题,但我尝试过的任何工作都没有.我对iPhone应用程序开发和目标C都很陌生.此时我想要做的就是在搜索栏字段中输入一个字符串,并在点击键盘上的搜索按钮时返回NSLog()中的值.

我的头文件如下所示:

@interface ListingMapViewController : UIViewController <UISearchBarDelegate> 

@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;

@end
Run Code Online (Sandbox Code Playgroud)

我在我的班级文件中有这个:

#import "ListingMapViewController.h"

@interface ListingMapViewController ()


@end

@implementation ListingMapViewController


- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
searchBar.delegate =self;

[self handleSearch:searchBar];
NSLog(@"User searched for %@", searchBar.text);

}

@end
Run Code Online (Sandbox Code Playgroud)

当我单击"搜索"按钮时没有输出.我错过了什么?谢谢.

uisearchbar uisearchbardelegate

5
推荐指数
1
解决办法
3974
查看次数

iOS7 UISearchBar取消按钮文本未显示.按钮看起来不可见

我希望这是一个简单的问题.

在此输入图像描述

我有一个显示取消按钮的搜索栏:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    [searchBar setShowsCancelButton:YES animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是取消按钮上的文字没有显示.

在此输入图像描述

按钮显然是因为我可以点击它,但显示按钮时没有文字出现.它好像按钮是不可见的.代码在iOS6中运行良好但现在在iOS7中我遇到了这个问题.有什么想法?我正在使用UISplitViewController,我的搜索栏位于MasterViewController的navigationItem.titleView中.

uisearchbar uisearchbardelegate ios ios7

5
推荐指数
2
解决办法
4445
查看次数

单击时UISearchBar没有响应

我一直试图找到解决方案几个小时,但没有骰子...我一直在尝试纯粹以编程方式实现UISearchBar(没有xib,没有接口构建器).

这是我的.h标题:

@interface RLCASearchMasterViewController : UIViewController<UISearchBarDelegate>

@property (strong, nonatomic) RLCAGUIElements *gui;
@property (strong, nonatomic) RLCAUITableView *table;
@property (strong, nonatomic) UISearchBar *searchBar;

@end
Run Code Online (Sandbox Code Playgroud)

和我的.m实施:

@synthesize searchBar;

- (void)loadView
{

[super loadView];

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)];
searchBar.delegate = self;
[self.view addSubview:searchBar];  

}
Run Code Online (Sandbox Code Playgroud)

我已经过了这个我不知道多少次,并且不知道我做错了什么... UISearchBar被添加到视图中,具有正确的大小和所有,但是当点击/点击时,键盘没有出现.如果我唤起以下内容:

[searchBar becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

键盘确实显示,所以它可能不是委托,但实际上检测它是否被点击...我不希望它在加载时编辑,并且只能通过请求...

请帮忙.谢谢!:)

真诚的,彼得.

iphone objective-c uisearchbar uisearchbardelegate

4
推荐指数
1
解决办法
3940
查看次数

如何重命名seachDisplayController以编程方式查看原始状态

我有UISearchDisplayController页面视图如下(原始状态)

在此输入图像描述

点击搜索栏并输入一些搜索词后,我会在表格中找到结果列表

在此输入图像描述

单击表中的条目后,将在堆栈顶部显示新的viewController

在此输入图像描述

我的意图是单击取消按钮(左上角),根视图将显示searchDisplay控制器的原始状态

在此输入图像描述

这就是我尝试过的

在我的取消方法中(当我点击左上方的取消按钮时触发)

- (void)cancel
{
  [self dismissViewControllerAnimated:YES completion:NULL];
  [self searchBarCancelButtonClicked:self.searchDisplayController.searchBar];
}
Run Code Online (Sandbox Code Playgroud)

在searchbar委托方法中我做到了这一点

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    self.searchBar.showsCancelButton = NO;

    [self.searchBar resignFirstResponder];
    self.searchBar.text = @"";
    searchDisplayController.searchResultsTableView.hidden = YES;
    [self searchDisplayControllerWillEndSearch:self.searchDisplayController];
}
Run Code Online (Sandbox Code Playgroud)

点击取消按钮后,我设法实现的就是这个

在此输入图像描述

原始的tableview似乎缺失(仅当我点击页面时才会出现)

如何修改我的方法以将搜索恢复到其原始状态?

objective-c uisearchdisplaycontroller uisearchbardelegate

4
推荐指数
1
解决办法
697
查看次数