UITabBar / UITabBarController在滚动时阻止触摸

时间:2015-06-19 03:12:33

标签: ios uitabbarcontroller uitabbar

我有一个UITabBarController的自定义子类,它调整了一个具有函数的委托来移动tabBar的框架(特别是frame.origin.y)。当偏移量等于屏幕的高度时(也就是说,它在屏幕外隐藏),我有一个UIScrollView延伸到屏幕的底部。在UIScrollView内,我无法在tabBar视图的初始帧中接收触摸。

我已经看到了向UITabBar或控制器视图添加难以处理的子视图的建议。这远非优雅,在处理可能占据整个屏幕的视图时会产生大量设计问题。我已经查看了UITabBarControllerUITabBar的小公开实现代码,但我在那里看到的没有显示他们如何阻止这些触摸。

我知道命中测试的递归性质,但是没有覆盖命中测试并重新调整UITabBarController子类中的触摸,这似乎相当不干净,我想不出一个通用的方法处理这个(事情。这个问题深入到了Apple的UITabBarController / UITabBar实现中,但为了清晰起见,我提供了一些相关代码:

class tab_bar_controller: UITabBarController, UITabBarControllerDelegate, tab_bar_setter //has included function
{

//.... irrelevant implementation


    func shift(visibility_percent: CGFloat) -> CGFloat //returns origin
    {
            self.tabBar.frame.origin.y = screen_size().height - (visibility_percent * self.tabBar.frame.size.height)
            self.tabBar.userInteractionEnabled = visibility_percent != 0 //no effect
            //self.view.userInteractionEnabled = visibility_percent != 0 //blocks all touches within screen.bounds
            return self.tabBar.frame.origin.y
    }
}

0 个答案:

没有答案