#ios
#iOS
Вопрос:
если я хочу, чтобы TableView отображался сверху, я использовал кнопку с этим кодом:
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
Но на самом деле не очень здорово использовать кнопку для выполнения этого действия.
Есть ли лучший способ сделать это? Должен ли пользователь нажимать 2 раза, а затем переходить на вершину?
Каков наилучший способ 😉
Ответ №1:
Попробуйте посмотреть на scrollToRowAtIndexPath:atScrollPosition:animated Это, вероятно, лучшая идея, чем прокрутка с помощью scrollRectToVisible.
Комментарии:
1. Хорошо, но вопрос в том, каков наилучший способ активировать это действие для пользователя. Функция — (void)touchesBegan:(NSSet *)касается события withEvent:(UIEvent *) {} не работает. Как возможно, что это действие будет активировано, если пользователь (например) дважды нажмет на TableView.
2. Никто? Делать это с помощью кнопки действительно отвратительно.
3. Как насчет добавления UITapGestureRecognizer в табличное представление? Затем вы можете изменить значение для «numberOfTapsRequired», которое по умолчанию равно 1, на 2.
Ответ №2:
Спасибо за ответы, я решил проблему в строках. Если пользователь дольше нажимает на строку, он будет перемещен на вершину.
Вызовите это в своей функции
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Action -> long pressing on a Cell
UILongPressGestureRecognizer *longPressGesture =
[[[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(longPress:)] autorelease];
[cell addGestureRecognizer:longPressGesture];
}
Добавьте эту функцию в свой класс
//Method
- (void)longPress:(UILongPressGestureRecognizer *)gesture
{
// only when gesture was recognized, not when ended
if (gesture.state == UIGestureRecognizerStateBegan)
{
// get affected cell
UITableViewCell *cell = (UITableViewCell *)[gesture view];
// get indexPath of cell
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
// do something with this action
NSLog(@"Long-pressed cell at row %@", indexPath);
//go to the first Row
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
}
}
Я надеюсь, что это кому-нибудь поможет.