0

私は自分のアプリケーションで John Lluch の SWRevealViewController を使用しています。サイドバーが出ていて、ユーザーがそれを閉じたい場合、フロント ビューは常にクリックされます。

サイドバー(リアビュー)表示時にフロントビューを無効にしたいのですが、思ったほど簡単ではありませんでした。フロント ビュー ( self.revealViewController.frontViewController.view.userInteractionEnabled = NO;) を無効にすると、ジェスチャ リスナーと表示ボタン リスナーも無効になるため、ユーザーはサイドバーを再度閉じることができません。

それで、誰かがこれに似た問題を解決しましたか?ビュー コントローラの特定のコンポーネントを無効にするにはどうすればよいですか? オブジェクトを調べて正しいサブビューを見つけようとしましたが、複雑すぎて見苦しくなります。

これについてご意見をお寄せいただきありがとうございます。

4

1 に答える 1

2

ビューコントローラーに追加SWRevealViewControllerDelegateします

 SWRevealViewController *revealViewController;

ビューDidLoadで次のメソッドを呼び出します

- (void)customSetup
{


revealViewController = self.revealViewController;
revealViewController.delegate=self;

if ( revealViewController )
{

   // revealViewController.toggleAnimationDuration = 0.75;
    [revealViewController panGestureRecognizer];
    [revealViewController tapGestureRecognizer];
   // revealViewController.panGestureRecognizer.enabled = NO;

}

}

設定ボタン/サイドバーボタンに次のメソッドを追加します

- (IBAction)butBack_actionforMain:(id)sender {

[self hideWaitingHud];



self.navigationController.interactivePopGestureRecognizer.delegate = self;
self.navigationItem.leftBarButtonItem.target = self.revealViewController;
self.navigationItem.leftBarButtonItem.action = @selector(revealToggle:);
[self.revealViewController revealToggle:sender];

// Set the gesture
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];



}

デリゲートメソッドで何かをしたい場合

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position
{
UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];

CGPoint windowPoint = [self.view convertPoint:self.view.bounds.origin toView:mainWindow];
NSLog(@"the window position ==%.2f",windowPoint.x);

if (windowPoint.x>0.0)
{
    // set to NO 
    //self.btnHKV.userInteractionEnabled=YES;
    revealViewController.panGestureRecognizer.enabled = NO;
    self.view.userInteractionEnabled = NO;

}
else
{
  // set to YES 
    //self.btnHKV.userInteractionEnabled=YES;
    self.view.userInteractionEnabled = YES;
    revealViewController.panGestureRecognizer.enabled = YES;



 }


}
于 2015-10-01T09:47:10.870 に答える