Отключение определенных компонентов представления (когда отображается SWREvealViewController)

Я использую SWRevealViewController Джона Люча в своем приложении, и когда боковая панель отсутствует, и пользователь хочет закрыть ее, вид спереди постоянно нажимается.

Я хочу отключить вид спереди, когда отображается боковая панель (вид сзади), но это оказалось не так просто, как я думал. При отключении вид спереди (self.revealViewController.frontViewController.view.userInteractionEnabled = NO;), слушатель жестов и слушатель кнопки открытия также отключены, поэтому пользователь не может снова закрыть боковую панель.

Так кто-нибудь решил проблему, подобную этой? Как я могу отключить определенные компоненты моего контроллера представления? Я попытался просмотреть объект и найти правильные подпредставления, но это слишком сложно и будет ужасно.

Спасибо за любой вклад по этому вопросу!

1 ответ

Добавлять SWRevealViewControllerDelegate в вашем viewcontroller

 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;



 }


}
Другие вопросы по тегам