【问题标题】:TableView editingStyleForRowAtIndexPath: Not getting called with UIPanGestureRecognizer?TableView editingStyleForRowAtIndexPath:没有被 UIPanGestureRecognizer 调用?
【发布时间】:2017-02-21 15:34:06
【问题描述】:

我正在使用显示用户列表的 UITableView。我已经实现了委托方法:

 - (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

通过在单元格上向左滑动来删除用户记录,它工作正常,但现在我将 UIPanGestureRecognizer 添加到控制器以通过在视图中向右滑动返回。现在这里的问题是 tableView 委托方法没有被正确调用。因此,任何帮助/建议将不胜感激如何处理此案。谢谢

这是我的 UIPanGestureRecognizer 操作:

-(void)performAction:(UIPanGestureRecognizer *)sender {

if (sender.state == UIGestureRecognizerStateChanged){

    velocity = [sender velocityInView:self.view];
    NSLog(@"Velocity X: %f Y: %f",velocity.x,velocity.y);
}

else if (sender.state == UIGestureRecognizerStateEnded){


    BOOL isHorizentalMotion = fabs(velocity.x) > fabs(velocity.y);
    BOOL isHorizentallyLeft = velocity.x < 0 ? YES : NO;
    BOOL isHorizentallyRight = velocity.x > 0 ? YES : NO;

    if (isHorizentalMotion && isHorizentallyRight) {

        NSLog(@"RIGHT GESTURE");

        [self menuClicked:nil];
    }

}

}

【问题讨论】:

  • UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard:)]; tap.cancelsTouchesInView = 否; [self.view addGestureRecognizer:tap];

标签: objective-c uitableview uipangesturerecognizer


【解决方案1】:

试试这个方法

只需在你的 .m 文件中实现,无需调用

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    CGPoint velocity = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:gestureRecognizer.view];
    return fabs(velocity.x) > fabs(velocity.y);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多