2016-08-05 2 views
0

現在、ホーム画面の表示コントローラと、ホーム画面の読み込み時にインスタンス化され、ハンバーガーアイコンをクリックして開くサイドバーメニュービューを含むアプリケーションをプログラミングしています。メニューの外をクリックするとメニューが閉じ、メニューを開くと無効になった通常の機能がホームビューに復元されるという機能を実装しようとしています。 viewDidLoad()UITapGestureRecognizerをインスタンス化して、ユーザーがホームビューでタップしたときを検出しました。折りたたみ可能なサイドバーメニュー付きのUITapGestureRecognizer

let tapRecognizer:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(HomeViewController.handleTap(_:))) 
    self.tableView.addGestureRecognizer(tapRecognizer) 

そして、ここでの実装です:

func handleTap(sender: UITapGestureRecognizer) { 
    if menu.isMenuOpen { 
     menu.showMenu(false) 
     self.tableView.allowsSelection = false 
    } 
} 

しかし、メニューをタップすると、メニューの外側をタップするだけで同じメニューを閉じます。また、タップジェスチャ認識機能は特定のタップを認識するだけなので、ホーム画面のすべてが常に無効になります。私はiOS 9.3でXCode 7.3を実行しています。画像: Home view controller with menu open

答えて

0

UIGestureRecognizerDelegateを実装し、tapRecognizer.delegate = selfを設定できます。

は、その後方法

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if (gestureRecognizer == tapRecognizer){ 
    let point = touch.locationInView(self.view) 
     if CGRectContainsPoint(menuView.frame, point) == true { 
      return false 
     } 
    } 
} 
+0

ええ、私は実際に同様のソリューションを使用して、最後の10分でそれを考え出したの下に実装します!しかし、助けてくれてありがとう! –

関連する問題