SWRevealViewController将手势添加到整个前视图

Mat*_*der 4 ios swrevealviewcontroller

现在我在我的项目中使用SWRevealViewController类.基本功能允许我通过按导航栏按钮交换前视图.但我想在整个视图中添加手势.

我可以添加此代码,它适用于我的按钮.

[self.startTestButton addGestureRecognizer:self.revealViewController.panGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

但它只适用于一个UI元素.所以我不能为这个手势添加其他UI元素.

下面的代码显示了如何编写panGestureRecognizer方法:

- (UIPanGestureRecognizer*)panGestureRecognizer
{
    if ( _panGestureRecognizer == nil )
    {
        SWDirectionPanGestureRecognizer *customRecognizer =
            [[SWDirectionPanGestureRecognizer alloc] initWithTarget:self action:@selector(_handleRevealGesture:)];

        customRecognizer.direction = SWDirectionPanGestureRecognizerHorizontal;
        customRecognizer.delegate = self;
        _panGestureRecognizer = customRecognizer ;
    }
    return _panGestureRecognizer;
}
Run Code Online (Sandbox Code Playgroud)

mlu*_*own 9

要将手势识别器添加到整个视图,只需将其添加到整个视图而不是单个按钮.我正在使用SWRevealViewController,我的主要观点是UITableView为了让手势识别器在整个视图中工作我在viewDidLoad我的方法中有这个UIViewController:

[self.tableView addGestureRecognizer: self.revealViewController.panGestureRecognizer];

因此,只需将识别器添加到您喜欢的视图中即可.对于大多数人来说,UIViewContoller这将是self.view.

显然,如果视图的任何控件或子视图具有自己的手势识别器,则这些将优先于顶级视图中的那个,这样平移仅在未被这些子视图占据的区域中工作.