78358


SwiftとXcodeで、ViewとUITabBarだけがあるシンプルなシーンを作りました。  
以下のようなコードを書くと、TabBarをタップしても反応しなくなります。

タップジェスチャーを実装する前は問題なくTabBarがタップに反応していたので、タップジェスチャーを実装したことが問題なのだと思います。  
UITabBarのisUserInteractionEnabledをtrueにしてもfalseにしても影響はありませんでした。

どうしたら、UITabBarを問題なく動作させることができますか？

[code]

    import UIKit
    import Foundation
    
    class ViewController: UIViewController,UITabBarDelegate,UIGestureRecognizerDelegate {
        
        
        @IBOutlet weak var tabBar: UITabBar!
        
        @objc func tapped(_ sender: UITapGestureRecognizer){
            if sender.state == .ended {
                print("タップ")
            }
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            tabBar.delegate = self
            
    
            let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(
                           target: self,
                           action: #selector(ViewController.tapped(_:)))
            tapGesture.delegate = self
            
            self.view.addGestureRecognizer(tapGesture)
            //tabBar.isUserInteractionEnabled = true//false
        }
        
        // タブバーのボタンを押した時
        func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
          // item.tag の数値を見て押下されたボタンを判別する
          switch item.tag {
            case 1:
                print("1")
                break
              // UITabBarItem 1 がタップされた
            case 2:
                print("2")
                break
              // UITabBarItem 2 がタップされた
            default:
              print("どのボタンでもない")
          }
        }
    
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
    
[/code]


CC BY-SA 4.0
2021-07-10T00:11:10.127
78085
2021-07-22T08:47:07.217
2021-07-10T04:59:33.500
3060
36446
question
swift
ViewにTapGestureを実装すると、UITabBarが反応しなくなる


[以下のコード](https://qiita.com/RS_Dessin/items/f1d337289589b4c5f551)のように、tapGesture.cancelsTouchesInView
= falseを追加してあげればできました。

[code]

    override func viewDidLoad() {
        super.viewDidLoad()
        
        tabBar.delegate = self
        
    
        let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(
                       target: self,
                       action: #selector(ViewController.tapped(_:)))
        tapGesture.delegate = self
        tapGesture.cancelsTouchesInView = false
        
        self.view.addGestureRecognizer(tapGesture)
    }
    
[/code]


CC BY-SA 4.0
2021-07-22T08:47:07.217
78358
2021-07-22T08:47:07.217
36446
78085
answer