2

我試圖使SWRevealViewController在我的應用程序中工作。SWRevealViewController在打開'snappoint'時關閉'

我所做的是我不希望能夠從屏幕上的任何地方打開菜單,所以我改變了所有UIPanGestureRecognizer與​​,所以它只能從屏幕側面觸發。

爲了實現這個我也改變了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; 
} 

但是(不知道這種變化是造成我的問題),當我開始從左側打開菜單,並展開它在那裏通常會卡在打開時的點它會重新陷入。

所以我們假設它打開到500px的屏幕。當我拖動它超過500像素時,它會自動關閉菜單。

此外,目前還無法通過刷卡來關閉菜單。我現在所做的是添加一個gesturerecognizer,它將觸發revealViewController.revealToggle(animated: true)方法。

有沒有人碰巧知道如何解決這個問題?

+0

我不能回答你,因爲我不是在我的電腦,但有一種方法,你可以改變多遠你必須滑動它關閉,通過.h文件查看方法,我認爲該方法有在名字中反彈,但所有的方法都描述了他們所做的事情,只是在那裏尋找方法。 – Timmy

+0

@Timmy我會嘗試如果我能找到它。我認爲那裏只有一種方法可以設定到哪一點。當你習慣了迅速的時候閱讀目標c。恐怖哈哈 – NoSixties

回答

0

我結束了使用委託方法來與SWRevealViewController我整個代碼修復它看起來像這樣

​​

self.hideMenuWhentappedAround()可以確保當你輕按UIView的任何地方,菜單將關閉。該方法創建在UIViewController的擴展中,看起來如下所示。

import UIKit 
import SWRevealViewController 

extension UIViewController { 
    func hideMenuWhenTappedAround() { 
     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(SWRevealViewController.dismissMenu)) 
     tap.cancelsTouchesInView = false 
     view.addGestureRecognizer(tap) 
    } 

    func dismissMenu() { 
     self.revealViewController().revealToggle(animated: true) 
    } 
} 
0

進口#import "SWRevealViewController.h

這兩個手勢可以幫助你打開和關閉SW菜單拖動並點擊打開和關閉SW

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

打開開關菜單通常

[self.revealViewController revealToggleAnimated:YES]