2

SWRevealViewController プラグイン ( https://github.com/John-Lluch/SWRevealViewController ) を使用して、iOS アプリで引き出しのようなトランジションを実現しています。

ビューに panGestureRecognizer を追加して、ユーザーが右の ViewController をドラッグして左の VC を非表示にできるようにしました。

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

ここで、正しい VC がドラッグされてアニメーションがトリガーされたことを検出したいので、基本的には、どの VC が表示されているかを自動的に知る方法を見つけたいだけです。

これまでのところ、次のコードでイベントを self.revealViewController.panGestureRecognizer にバインドしようとしました。

 [self.revealViewController.panGestureRecognizer addTarget:self action:@selector(PanGestureEnded:)];

そして、これを行います:

-(void)PanGestureEnded:(UIPanGestureRecognizer *)gesture{
    if (gesture.state==UIGestureRecognizerStateEnded) {
        //some code here
    }
}

しかし、私のアプリは常にクラッシュし、exc_bad_access エラーが発生します。NSZombies を有効にすると、次のエラー メッセージが表示されます。

 -[TabBarViewController PanGestureEnded:]: message sent to deallocated instance 0xc1ad890

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

どうもありがとう

4

2 に答える 2

0

アクションを self.revealViewController.panGestureRecognizer にもバインドしようとすると、今日同じエラーが発生しました。

エラーを修正できません。代わりに、現在のコントローラーを RevealViewController のデリゲートとして設定し、デリゲート メソッドを呼び出します。

- (void)revealControllerPanGestureBegan:(SWRevealViewController *)revealController

上記の方法で私のアクションを実行します。

この助けを願っています。

于 2013-11-01T15:11:44.570 に答える