1

私はiOSにかなり慣れていません。これを調べてみましたが、次の明確な答えが見つかりませんでした。

FirstPage のサイド メニュー バーを処理する SWRevealViewController があります。

btn_Menu をクリックした後 (または左にスワイプ) に SWReveal が表示されたら、FirstPage をグレーにして使用できないようにします。

FirstPage では、次のことを行う必要があることがわかりました。

[btn_Menu addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];

私はどうにかして RevealToggle メソッドを変更するか、最初にそれを暗くしてから RevealToggle を呼び出す FirstPage に新しいセレクターを書く必要がありますか? これを行うための最良かつ最も簡単な方法は何なのかわかりません。どうもありがとう。

4

1 に答える 1

1

FirstPage viewDidLoad でこのコードを実行します。

- (void)viewDidLoad
{
SWRevealViewController *  revealController=[[SWRevealViewController alloc]init];
    revealController = [self revealViewController];
    [self.view addGestureRecognizer:revealController.panGestureRecognizer];
       revealController.delegate=self;
    [revealController panGestureRecognizer];

    [revealController tapGestureRecognizer];
    [btnSideMenu addTarget:revealController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];

}

その後、この SWRevealViewController のデリゲート メソッドを FirstPage に追加します。

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position
{
    if (revealController.frontViewPosition == FrontViewPositionRight)
    {
        UIView *lockingView = [UIView new];
        lockingView.translatesAutoresizingMaskIntoConstraints = NO;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:revealController action:@selector(revealToggle:)];
        [lockingView addGestureRecognizer:tap];
        [lockingView addGestureRecognizer:revealController.panGestureRecognizer];
        [lockingView setTag:1000];
        [revealController.frontViewController.view addSubview:lockingView];


        lockingView.backgroundColor=[UIColor grayColor];

        NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(lockingView);

        [revealController.frontViewController.view addConstraints:
         [NSLayoutConstraint constraintsWithVisualFormat:@"|[lockingView]|"
                                                 options:0
                                                 metrics:nil
                                                   views:viewsDictionary]];
        [revealController.frontViewController.view addConstraints:
         [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[lockingView]|"
                                                 options:0
                                                 metrics:nil
                                                   views:viewsDictionary]];
        [lockingView sizeToFit];
    }
    else
        [[revealController.frontViewController.view viewWithTag:1000] removeFromSuperview];
}
于 2014-11-06T06:34:17.350 に答える