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まで開くとしましょう。 500pxを超えてドラッグすると、自動的にメニューが閉じます。

また、現在はもう一度メニューをスワイプして閉じることはできません。私が今行ったことは、revealViewController.revealToggle(animated: true)メソッドをトリガーするジェスチャー認識ツールを追加することです。

これを修正する方法を知っている人はいますか?

+0

イムは、私のコンピュータではなく、あなたがメソッドの.hファイルに目を通す、あなたはそれを閉じることのためにスワイプする必要がどこまで変更できる方法があり、私は方法があると思いませんので、私はあなたに答えるカント名前にバウンスがありますが、すべてのメソッドには、そのメソッドが記述されていますので、そこのメソッドを探してください。 – Timmy

+0

@Timmy見つけたら試してみるよ。私はそこには、どのポイントにスナップするべき方法しかないと思った。あなたがスウィフトをするのに慣れているときに目的を読んでいる。ホラー・ハハ – 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]; 

オープンSWメニュー通常

[self.revealViewController revealToggleAnimated:YES] 
関連する問題