外部UITableView委托如何隐藏UISearchBar键盘?

时间:2012-08-15 00:48:04

标签: iphone objective-c ios cocoa-touch uitableview

我有一个表视图,其中包含另一个文件中的数据源/委托。此外,表视图上方还有一个属于第一个文件的搜索栏。在滚动时隐藏键盘,我需要调用:

[self.searchBar resignFirstResponder]

但是

(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

方法在委托中。那么在这种情况下滚动时如何隐藏键盘呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在scrollviewwillbegindragging中发送通知。 tableview委托:

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
     [[NSNotificationCenter defaultCenter] postNotificationName:@"resign" object:nil];
}

搜索栏委托:

-(void)viewDidLoad{
     [super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(goTo:) name:@"resign" object:nil];
}

-(void)goTo:(NSNotification*)notification {
[self.searchBar resignFirstResponder];

}

答案 1 :(得分:0)

有很多方法可以做,其中有几个是下面的。

选项1: 初始化表对象后添加以下行

[yourTableView setKeyboardDismissMode:UIScrollViewKeyboardDismissModeOnDrag];

选项2: 得到你的tableview的superview(我希望它作为aViewcontrollerObj.view)并强行结束它的编辑。

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    UIView *tableviewSuperView = yourTableView.superview;
    [tableviewSuperView endEditing:true];
}

希望有所帮助 快乐的编码:)