滑动删除其中的一个UIScrollView内嵌一个UITableView(swipe to dele

2019-06-26 02:54发布

我遇到的一个问题一样的UIScrollView能够通过刷卡删除行
这是一个的tableView和另一种观点认为工作作为滚动视图的子视图,我不能让“刷卡删除”,直到我设置了滚动的为NO scrollEnable属性,但它带来另一个问题:我不能刷卡之间的tableView和另一种观点
有没有什么方法比设置scrollEnable属性启用“滑动删除”等?
如果没有,我什么时候应该设置self.scrollEnable = NO ,当我应该设置self.scrollEnable = YES有“刷卡删除”和“刷卡视图之间”都工作得不错?

谢谢

Answer 1:

如果我没有记错,触摸被通过滚动视图消耗和表格的编辑是不会发生,因为该表是没有得到的触动。 这可以通过以SND的触摸到下一个响应者也继承了UIScrollView的解决。 所以它只是一个overrwriting中的touchesBegan的事,感动和结束。 今天晚些时候将更新答案与需要为我的道路上,现在的代码。 干杯!

编辑:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.nextResponder touchesBegan:touches withEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    if(!self.dragging)
    {
        [self.nextResponder touchesMoved:touches withEvent:event];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.nextResponder touchesEnded:touches withEvent:event];
}

只需创建一个从继承的类UIScrollView并在实施降本代码。 这将使滚动视图不下咽的触动,但把它们。 很显然,当创建你的滚动视图使用刚刚创建的,而不是类UIScrollView 。 抱歉耽搁了。 希望这可以帮助。

干杯!



Answer 2:

我已经成功地使用

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

在包含的tableview以使驻留在tableview中一个UISwipeGestureRecognizer来触发,而不是由“主”滚动视图的手势识别被吞噬一个UIScrollView子类。



Answer 3:

您需要使用的自定义子类UIScrollView 。 它应该在水平滚动视图表视图的工作原理:

@interface MyCoolScrollView : UIScrollView

@end

@implementation MyCoolScrollView

// Allows inner UITableView swipe-to-delete gesture
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer
{
    return [otherGestureRecognizer.view.superview isKindOfClass:[UITableView class]];
}

@end


Answer 4:

@ THOR的答案是好的,但如果你UITableView是一个UIScrollView ,你可能有其他UIView在那里了。 当您在滚动tableview ,不小心滑到了“其他视图”。

这将防止滑动,让你的滑动删除。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (gestureRecognizer.state != 0) {
        return YES;
} else {
    return NO;
}

}



Answer 5:

我知道这个线程是老了,但这里是迅速的4版本,在iOS中了11个工作,我(你会UIScrollView的子类):

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    if (otherGestureRecognizer.view != nil && otherGestureRecognizer.view!.superview != nil) {
        return otherGestureRecognizer.view!.superview!.isKind(of: UITableView.self)
    }

    return false
}

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    if (gestureRecognizer.state != .possible) {
        return true
    }

    return false
}


文章来源: swipe to delete in a UITableView which is embeded in a UIScrollView