拖动包含ui按钮的表视图单元格



我正在尝试实现一个uitableview,它的行可以左右拖动(并显示它们后面的内容)。代码运行良好,我使用以下方法实现了它:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

我的问题是,这些行还包含UIButtons,当单击它们时——应该单击,但当拖动时——应该拖动整个单元格。我找到了这个解决方案。基本上是在点击UI按钮时弹出事件:

[super touchesBegan:touches withEvent:event];
[self.nextResponder touchesBegan:touches withEvent:event]; 

但是,事件touchesMoved似乎只出现过一次。
我看到了这方面的各种问题。实例但我看不到任何解决方案或回应

如有任何帮助、建议或创造性的解决方法,我们将不胜感激

与其实现touchesBegan等,为什么不使用UIPanGestureRecognizer呢?我只用一个简单的矩形视图进行了测试,它主要由UIButton覆盖。无论我触摸到哪里,视图都会被拖动,如果我点击按钮,按钮方法就会启动。

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
    [self.theView addGestureRecognizer:panGesture]; //theView is IBOutlet for small view containing a button
}
-(void)viewDidAppear:(BOOL)animated {
    self.currentViewFrame = self.theView.frame;
}
- (IBAction)handlePanGesture:(UIPanGestureRecognizer *)sender {
    CGPoint translate = [sender translationInView:self.view];
    CGRect newFrame = self.currentViewFrame;
    newFrame.origin.x += translate.x;
    newFrame.origin.y += translate.y;
    sender.view.frame = newFrame;
    if (sender.state == UIGestureRecognizerStateEnded)
        self.currentViewFrame = newFrame;
}
-(IBAction)doClick:(id)sender {
    NSLog(@"click");
}

只需检查使用标记系统触摸的是哪一个。

最新更新