我有一个包含大量数据列表的应用程序,我想通过双击navigationBar将UITableView滚动到列表顶部(搜索位置)。
我该如何实现这个功能?
谢谢您的帮助。
我有一个包含大量数据列表的应用程序,我想通过双击navigationBar将UITableView滚动到列表顶部(搜索位置)。
我该如何实现这个功能?
谢谢您的帮助。
将tableView滚动到顶部的标准手势是单击状态栏。默认情况下启用此功能,请参阅UIScrollView Reference
如果您真的需要导航栏并且目标是3.2或更高版本,我建议将一个UITapGestureRecognizer附加到navigationBar上。
- (void)viewDidLoad {
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(navigationBarDoubleTap:)];
tapRecon.numberOfTapsRequired = 2;
[navController.navigationBar addGestureRecognizer:tapRecon];
[tapRecon release];
}
- (void)navigationBarDoubleTap:(UIGestureRecognizer*)recognizer {
[tableView setContentOffset:CGPointMake(0,0) animated:YES];
}
如果你的目标版本是3.0或更低,可能会有些棘手,不建议使用。
继续上面tonklon的回答,你可以通过获取navigationBar视图的子视图来区分其中的各个元素。
navigationBar的子视图包括:
0 左按钮, 1 标题, 2 右按钮。
所以不是:
[navController.navigationBar addGestureRecognizer:tapRecon];
为导航栏标题执行以下操作:
[[self.navigationController.navigationBar.subviews objectAtIndex:1] setUserInteractionEnabled:YES];
[[self.navigationController.navigationBar.subviews objectAtIndex:1] addGestureRecognizer:tapRecon];