如何检测对 UITabBarItem 的双击?

How can I detect a double tap on UITabBarItem?

我尝试添加手势识别器,但没有意识到使用 UITabBarItem 是不可能的,这是我所做的:

还有其他建议吗?

我认为这不会有简单的解决方案,因为双击标签栏项目不是预期的行为。即使你成功了,我也认为 Apple 不会通过审查,因为这可能会违反他们的设计指南。

每当您尝试向未从 UIView 继承的对象添加手势识别器时,您都会看到该错误。尝试将手势识别器添加到 UITabBar,然后使用双击发生的点,将其与正确的选项卡栏项目匹配。

一个简单的解决方案可以是这样的。

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {

    let name = viewController.tabBarItem.title ?? ""
    if(name == "Home"){

        if(name == self.selectedTabName){
            print("tapped home again")
            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "scrollToTop"), object: nil)
        }
    }
    self.selectedTabName = name
    self.delay(0.5){

        self.selectedTabName = ""
    }

}
 func delay(_ delay:Double, closure:@escaping ()->()) {

    let when = DispatchTime.now() + delay
    DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}