TapGest在tabBar下无效

时间:2018-05-24 10:54:43

标签: ios swift uitabbar

我有一个带有3个ViewController的“经典应用程序”和一个用于更改ViewController的tabBar。

在我的第一个ViewController上,我有一个按钮,在所有屏幕上显示UIView,所以我用这个setTabBarVisible func隐藏了tabBar:

extension UIViewController
{

func setTabBarVisible(visible: Bool, animated: Bool)
{
    //* This cannot be called before viewDidLayoutSubviews(), because the frame is not set before this time

    // bail if the current state matches the desired state
    if (isTabBarVisible == visible) { return }

    // get a frame calculation ready
    let frame = self.tabBarController?.tabBar.frame
    let height = frame?.size.height
    let offsetY = (visible ? -height! : height)

    // zero duration means no animation
    let duration: TimeInterval = (animated ? 0.3 : 0.0)

    //  animate the tabBar
    if frame != nil
    {
        UIView.animate(withDuration: duration)
        {
            self.tabBarController?.tabBar.frame = frame!.offsetBy(dx: 0, dy: offsetY!)
            return
        }
    }
}

var isTabBarVisible: Bool
{
    return (self.tabBarController?.tabBar.frame.origin.y ?? 0) < self.view.frame.maxY
}
}

这是有效的,tabBar是隐藏的,我看到了我所有的UIVIew。 问题是,我在UIView底部有一个UILabel(在我经常显示tabBar的地方),我不能在我的UILabel上使用我的TapGesture,没有任何事情发生。 (如果我在其他地方显示标签,UITapGesture效果很好。)

我试图将我的tabBar的zPosition设置为0,将我的UIView的zPosition设置为1,但这也不起作用。

如何在我的视图底部点击我的标签?

2 个答案:

答案 0 :(得分:0)

确保是真的

  

label.isUserInteractionEnabled = true

Please refer this link may it help you.

答案 1 :(得分:0)

检查UILabel.isUserInterration =启用

确保隐藏tabbar时,在底栏属性下取消选择。 See atteh imnage.

您可以使用编程方式尝试

ViewController.edgesForExtendedLayout = UIRectEdge.top