2016-12-31 10 views
0

AppCoda.comからサイドバーメニューのチュートリアルに従っていますが、問題があります。ユーザーがメニューに入っているときにユーザーとのやりとりを無効にしたい現在、ユーザーはメニューに入っていてもメイン画面とやりとりできます。問題のスクリーンショットにSWRevealViewControllerを使用してサイドバーメニューでインタラクションを無効にする方法

リンク:あなたはサイドバーのためSWRevealViewControllerを使用している場合 http://i.imgur.com/1gld2bY.gifv

+0

にアルファ成分を設定し、フロントビューコントローラが側に行くとき、あなたはUIViewのを追加できることをしたくない場合は

これはまた、あなたのメインビューを消灯させそこには何も影響しないように。暗くしたい場合は、それも行うことができます。 SWRevealViewControllerを使用していますか? – Munib

+0

はい、私はそれが私がしたいことのための最良の選択肢かもしれないと思います。 –

+0

似たようなことをしたいのであれば、私のコードを投稿させてください。 – Munib

答えて

1

呼び出されません。基本的に、これはメインビューの後ろに座るView Controllerです。あなたは、その後、0

let darkView = UIView() 

override func viewWillAppear(_ animated: Bool) { 

    darkView.addGestureRecognizer(revealViewController().tapGestureRecognizer()) 
    darkView.backgroundColor = UIColor.black.withAlphaComponent(0.7) 
    darkView.frame = self.revealViewController().frontViewController.view.bounds 
    self.revealViewController().frontViewController.view.addSubview(darkView) 
} 

override func viewWillDisappear(_ animated: Bool) { 
    darkView.removeFromSuperview() 
} 
0

。コード

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) { 
let tagId = 4207868622 

if revealController.frontViewPosition == FrontViewPosition.Right { 
    let lock = self.view.viewWithTag(tagId) 
    UIView.animateWithDuration(0.25, animations: { 
      lock?.alpha = 0 
     }, completion: {(finished: Bool) in 
      lock?.removeFromSuperview() 
     } 
    ) 
    lock?.removeFromSuperview() 
} else if revealController.frontViewPosition == FrontViewPosition.Left { 
    let lock = UIView(frame: self.view.bounds) 
    lock.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
    lock.tag = tagId 
    lock.alpha = 0 
    lock.backgroundColor = UIColor.blackColor() 
    lock.addGestureRecognizer(UITapGestureRecognizer(target: self.revealViewController(), action: "revealToggle:")) 
    self.view.addSubview(lock) 
    UIView.animateWithDuration(0.75, animations: { 
      lock.alpha = 0.333 
      } 
     ) 
    } 
} 

の下に使用してください:あなたのビューコントローラでself.revealViewController().delegate = selfを追加することを忘れないでください、そうでない場合は、デリゲートは、あなたのTableViewControllerすなわち、メニュー項目のコントローラにこのコードを入れて

+0

私はこれを置くはずの場所についてちょっと混乱しています –

+0

'self.revealViewController()。delegate = self'を追加するとエラーが表示されます。それは私のタイプのSWRevealViewControllerDelegateに私のビューコントローラを割り当てることができないと言う! –

+0

あなたのviewDidLoadメソッドでself.revealViewController()。delegate = selfを追加します。あなたのクラスのどこにいても上のコード。それは方法のようなものです –

関連する問題