简体   繁体   中英

Can not perform swipe-to-delete on UITableView if it is in UIScrollView

我创建了一个UITableView,在正常情况下可以对其表单元格执行滑动删除操作,但是当我将UITableView放入可以水平滚动的UIScrollView时,外部的滚动视图将吞没swipe事件,因此将swipe-to -delete不可行。

I'm sorry to tell you that you have to give up one for your function since the two functions rely on the same gesture.
If you want to keep the swipe-delete, set the outer scrollview.scrollEnabled = NO . I think that would help.

If not, have a button to start the tableview edit mode. That will make you delete cell with the scrollview can be slided.

I've finally found solution!

Subclass the outer UIScrollView, and override a method

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

@interface AllowSwipeScrollView : UIScrollView

@end

@implementation AllowSwipeScrollView

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    BOOL inTableViewCell = .... // check the current touch is in table view cell

    if (inTableViewCell) {
        return NO;
    }else{
        return [super gestureRecognizerShouldBegin:gestureRecognizer];
    }
}

@end

And make sure the UITableView instances are in AllowSwipeScrollView.

try This condition

if (ScrollView == self.tableView) return;

in scrollviewdidscroll method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM