Никакие жесты касания не были установлены, но tabBar реагирует только на долгое нажатие. Зачем? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть представление, у которого есть tabBar вверху, а под ним - tableView.TableView имеет жесты касания, которые ограничены им (касание, двойное касание и панорамирование).Однако в tabBar не установлены жесты касания, а реагирует только на долгое нажатие.

Некоторая полезная информация: - делегату tabBar было присвоено значение self

только код tabBar:

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    if item.tag == 101 { //tag number of first tab bar item
        print("tableView")
    }
    if item.tag == 102 { //tag number of second tab bar item
        print("collectionView") //going to add collection view eventually
    }
}

любая помощь будет оценена.Спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

Так как я не мог понять это (возможно, это связано с содержимым tableView под ним), я решил обойти это решение, используя жест касания:

@IBOutlet weak var tabBar: UITabBar!

override func viewDidLoad() {
    let tabBarTap = UITapGestureRecognizer(target: self, action: #selector(MyViewController.switchSelectedTabItem(tapGestureRecognizer:)))
    tabBarTap.delegate = self
    tabBarTap.numberOfTapsRequired = 1
    tabBarTap.numberOfTouchesRequired = 1
    tabBar.addGestureRecognizer(tabBarTap)
}

@objc func switchSelectedTabItem(tapGestureRecognizer: UITapGestureRecognizer) {
    let touchPoint = tapGestureRecognizer.location(in: self.view)
    let split = tabBar.frame.width/2    //because i have two tab bar items. divide it by how many tab bar items you have
    if touchPoint.x > split {           //again, since i have two tab bar items, i can just divide the location of the tap into two sections (tab bar item 1 and tab bar item 2)
        tabBar.selectedItem = tabBar.items?[1]
        //run code for when second item is selected
    } else {
        tabBar.selectedItem = tabBar.items?[0]
        //run code for when second item is selected
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...