重新加载tableview和触摸手势

dai*_*dai 6 iphone objective-c uitableview uitouch

我有一个tableview,在使用时添加新内容时会重新加载 [tableview reloadData];

麻烦的是我在表格中的TableCells上有一个UILongPressGestureRecognizer,因为正在重新加载单元格/表格,LongPress并不总是有时间工作,我猜测它的内部计时器正在重置当单元格/表格正在重新加载.

oct*_*cty 4

您是否尝试过在调用UILongPressGestureRecognizer之前查看 s 的状态?[tableView reloadData]例如:

// Returns |YES| if a gesture recognizer began detecting a long tap gesture
- (BOOL)longTapPossible {
    BOOL possible = NO;

    UIGestureRecognizer *gestureRecognizer = nil;
    NSArray *visibleIndexPaths = [tableView indexPathsForVisibleRows];

    for (NSIndexPath *indexPath in visibleIndexPaths) {
        // I suppose you have only one UILongPressGestureRecognizer per cell
        gestureRecognizer = [[tableView cellForRowAtIndexPath:indexPath] gestureRecognizers] 
                                lastObject];
        possible = (gestureRecognizer.state == UIGestureRecognizerStateBegan ||
                    gestureRecognizer.state == UIGestureRecognizerStateChanged);
        if (possible) {
            break;
        }
    }
    return possible;
}

// ... later, where you reload the tableView:

if ([self longTapPossible] == NO) {
    [tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

让我知道它是否有效!