将删除滑动手势从 UIPageViewController 传递给 UITableView

Posted

技术标签:

【中文标题】将删除滑动手势从 UIPageViewController 传递给 UITableView【英文标题】:Pass delete swipe gesture from UIPageViewController to UITableView 【发布时间】:2017-10-12 02:33:33 【问题描述】:

我在UIPageViewController 中有一个UITableView,滑动事件似乎没有传递给UITableView

我能够为我的UIPageViewController 禁用边缘弹跳,但我仍然没有找到一种方法来始终在我的UITableView 中启用滑动删除。

在此示例中,需要多次滑动才能显示删除按钮。这个手势在实际设备上非常挑剔

右侧页面之后没有其他页面,因此UIPageViewController 没有理由需要滑动。

viewDidLoad 我有:

for view in self.pageViewController.view.subviews 
    if let scrollView = view as? UIScrollView 
        scrollView.delegate = self
    

下面是我:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool 
    return true


func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) -> Bool 
    print(gestureRecognizer)
    if gestureRecognizer is UISwipeGestureRecognizer 
        return false
    else
        return true
    

有很多相关的帖子有不同的答案,但没有一个适合我的用例。

【问题讨论】:

这更像是一个替代方案,而不是我的问题的解决方案,但我只是使用了 MGSwipeTableCell。这很容易实现。 github.com/MortimerGoro/MGSwipeTableCell 【参考方案1】:

您可以通过not使用datasource来禁用UIPageViewController的滑动,只需使用setViewControllers:direction:animated:completion方法提供内容。希望tableView的滑动可以工作。

【讨论】:

我必须显示多个页面,所以我不确定如何在不完全拆开 UIPageViewController 的情况下实现这一点

以上是关于将删除滑动手势从 UIPageViewController 传递给 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 移动到另一个场景时如何从场景中删除滑动手势?

只需一个手势滑动即可删除单元格

有一种方法可以执行“长”向左滑动手势来删除 XCUITest 中的元素

UITableView滑动删除iOS上的手势冲突

更喜欢滑动删除而不是竞争的滑动手势

影响滑动删除行的 TableView 手势识别器