Как реализовать пролистывание справа налево в UITableViewCell внутри UIPageViewController

У меня есть одно требование,

Я реализовал один UIPageViewController для отображения нескольких форм, в каждом индексе, он показывает один список элементов в UITableView, при нажатии каждого элемента открывается соответствующая форма.

Теперь мне нужно скопировать элемент из списка, проведя пальцем влево, как мы делаем в UITableView но здесь я сталкиваюсь с одной проблемой, поскольку перелистывание противоречит перелистыванию страниц.

Для достижения этого поведения у меня есть жест смахивания на UITableviewCell, но он не распознает смахивание все время.

Проведите по UIPageViewController

Пожалуйста, найдите фрагмент кода ниже,

#import FormPageVC.h

@interface FormPageVC () <UIGestureRecognizerDelegate>

@end

@implementation FormPageVC

-(void)viewDidLoad {
[super viewDidLoad];
UIGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognized:)];
            recognizer.delegate = self;
            [self.view addGestureRecognizer:recognizer];
            for (UIGestureRecognizer *gesRecog in self.view.gestureRecognizers) {
                gesRecog.delegate = self;
            }
}

-(void)gestureRecognized:(UISwipeGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateEnded) {
        self.pageViewController.dataSource = self;
    }
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    BOOL shouldReceiveTouch = YES;
    if([touch.view isKindOfClass:[UITableViewCell class]]) {
        shouldReceiveTouch = NO;
    }
    // UITableViewCellContentView => UITableViewCell
    if([touch.view.superview isKindOfClass:[UITableViewCell class]]) {
        shouldReceiveTouch = NO;
    }
    // UITableViewCellContentView => UITableViewCellScrollView => UITableViewCell
    if([touch.view.superview.superview isKindOfClass:[UITableViewCell class]]) {
        shouldReceiveTouch = NO;
    }
    for (UIScrollView *view in self.pageViewController.view.subviews) {
        if ([view isKindOfClass:[UIScrollView class]]) {
            view.scrollEnabled = shouldReceiveTouch;
        }
    }
    return shouldReceiveTouch; // handle the touch
}

@end

Любая помощь, чтобы оптимизировать или улучшить этот код?

0 ответов

Другие вопросы по тегам