在UITabBarItem上收听LongPressGesture

时间:2018-03-03 20:39:52

标签: ios uigesturerecognizer swift4

我想在单个UITabBarItem上附加一个简单的long press。这可能在swift 4吗?我尝试过如下,但是UITabBarItem没有我可以实现的事件成员enter image description here uiTabBar是出路。我也看到我可以使用UITabBarDelegate,但我还没有让它发挥作用。 longTap功能的签名如下:

@objc func longTap(_ sender: UIGestureRecognizer){}

1 个答案:

答案 0 :(得分:0)

我最后在UIButton UITabBarItem之上放置了UILongPressGestureRecognizer我希望附加 //Declare the button let uiTabBar = UIButton(frame: CGRect.zero) func setupMiddleButton() { // Create image let africaIcon = UIImage(named: "ic_africa") let numberOfItems = CGFloat(tabBar.items!.count) let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height) uiTabBar.frame = CGRect(x: 0, y: 0, width: tabBarItemSize.width, height: tabBar.frame.size.height) var menuButtonFrame = uiTabBar.frame menuButtonFrame.origin.y = self.view.bounds.height - menuButtonFrame.height - self.view.safeAreaInsets.bottom menuButtonFrame.origin.x = self.view.bounds.width/2 - menuButtonFrame.size.width/2 uiTabBar.frame = menuButtonFrame uiTabBar.setImage(africaIcon, for: UIControlState.normal) //uiTabBar.backgroundColor = UIColor.green self.view.addSubview(uiTabBar) self.view.layoutIfNeeded() } 。我使用以下功能准备了按钮:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(normalTap(_:)))
                tapGesture.numberOfTapsRequired = 1
                uiTabBar.addGestureRecognizer(tapGesture)
                let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap(_:)))
                uiTabBar.addGestureRecognizer(longGesture)
                //Set default tab
                self.selectedIndex = 1;

要附加事件,我做了以下事情:

@objc func normalTap(_ sender: UIGestureRecognizer){
    self.selectedIndex = 1;
}

@objc func longTap(_ sender: UIGestureRecognizer){
    print("Long tap")
    if sender.state == .ended {
        print("UIGestureRecognizerStateEnded")
        //Do Whatever You want on End of Gesture
        //This is when the long event is triggered
    }
    else if sender.state == .began {
        print("UIGestureRecognizerStateBegan.")
        //Do Whatever You want on Began of Gesture
    }
}

选择器方法如下所示:

{{1}}

中间的'TabBar'是用我想要的事件创建的。enter image description here