objective-c - SWRevealViewController 在超过 'snappoint' 打开时关闭

标签 objective-c swift uigesturerecognizer swrevealviewcontroller

我正在尝试制作 SWRevealViewController在我的应用程序中工作。

我所做的是我不希望能够从屏幕上的任何位置打开菜单,所以我将所有 UIPanGestureRecognizer 更改为 UIScreenEdgePanGestureRecognizer 所以它只会从屏幕的侧面触发。

为了实现这一点,我还更改了panGestureRecognizer 方法。现在看起来如下

- (UIScreenEdgePanGestureRecognizer*)panGestureRecognizer
{
    if ( _panGestureRecognizer == nil )
    {
        _panGestureRecognizer = [[SWRevealViewControllerPanGestureRecognizer alloc] initWithTarget:self action:@selector(_handleRevealGesture:)];
        _panGestureRecognizer.delegate = self;
        _panGestureRecognizer.edges = UIRectEdgeLeft;
        [_contentView.frontView addGestureRecognizer:_panGestureRecognizer];
    }
    return _panGestureRecognizer;
}

但是(不确定此更改是否会导致我的问题)当我开始从左侧打开菜单并将其展开到打开时通常会捕捉到的位置时,它会折叠回去。

假设它打开到屏幕的 500 像素。当我将它拖到超过 500 像素时,它会自动关闭菜单。

此外,目前无法通过滑动菜单再次关闭菜单。我现在所做的是添加一个手势识别器,它将触发 revealViewController.revealToggle(animated: true) 方法。

有没有人碰巧知道如何解决这个问题?

最佳答案

导入 #import "SWRevealViewController.h"

这两个手势可以帮助您打开和关闭 sw 菜单。拖拽点击打开关闭SW

[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
[self.view addGestureRecognizer:self.revealViewController.tapGestureRecognizer];

正常打开sw菜单

[self.revealViewController revealToggleAnimated:YES]

关于objective-c - SWRevealViewController 在超过 'snappoint' 打开时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43211959/

相关文章:

ios - 在 subview 中使用按钮

Swift - 如何要求 UIGestureRecognizer 函数返回值

ios - iOS 13 撤消/重做手势的手势识别器在哪里?

ios - 如何在uicollectionview中获取当前的cell.contentview。如何在 uicollectionview 单元格中添加 subview

objective-c - Cocos2D 围绕物体的贝塞尔曲线就像受重力作用一样

iphone - 如何增加或减少PDF页面亮度?

objective-c - UITextFieldTextDidChangeNotification 不会在 ios6 ipad3 上被调用

swift - CGContextSetLineDash 警告

iphone - 我可以禁用 UIPageViewController 的页面边框手势识别器吗?并保留滑动的那一个?

ios - 在 Swift 中从 Flickr 异步加载 UICollectionView 的图像