У меня есть приложение с длинным списком данных в tableView, и я хотел бы дважды коснуться панели навигации, чтобы прокрутить UITableView вверху списка (где находится поиск).
Как я могу это реализовать?
Спасибо за вашу помощь.
У меня есть приложение с длинным списком данных в tableView, и я хотел бы дважды коснуться панели навигации, чтобы прокрутить UITableView вверху списка (где находится поиск).
Как я могу это реализовать?
Спасибо за вашу помощь.
Стандартным жестом для прокрутки tableView вверх является одно касание строки состояния. Он включен по умолчанию, см. Справочник по UIScrollView
Если вам действительно нужна панель навигации и вы ориентируетесь на версию 3.2 и выше, я бы рекомендовал прикрепить UITapGestureRecognizer к панели навигации.
- (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, получая его подпредставления.
Подвиды панели навигации:
0 левая кнопка, 1 заголовок, 2 правая кнопка,
поэтому вместо:
[navController.navigationBar addGestureRecognizer:tapRecon];
сделайте это для заголовка панели навигации:
[[self.navigationController.navigationBar.subviews objectAtIndex:1] setUserInteractionEnabled:YES];
[[self.navigationController.navigationBar.subviews objectAtIndex:1] addGestureRecognizer:tapRecon];