2011-03-10 59 views
0

我是比较新的对象 - 并没有到我的眼睛导航的关闭又:)定制的UITabBarController在iPhone

我正在写一个自定义的标签栏类作为一个锻炼的舞台多学一点&我需要一个项目,我正在做。我的想法是创建一个普通的UITabBarController,然后隐藏视图并用我自己的视图替换它,迄今为止已经工作,我已经获得了理想的美学。正如你可以在这里看到,

Can't post image due to lack of reputation, click here to see it :)](http://www.samjordan.co.uk/grabs/16845b4daf900c994e95a31a66ecf1f1.png)

,我用得到这个can be seen at this gist的代码。我遇到的问题是触摸事件似乎没有触发。起初我以为这是因为该按钮位于UIImageView中,因此启用了用户交互,但仍然没有运气!

我会很感激任何帮助,会让我解决问题。正如我所说的,我对Obj-C来说是比较新的,所以它可能只是简单的我错过了!

+1

你为什么这样做?内置标签栏有什么问题?一些非常出色的人在这个框架上工作,我保证你不会重现一些和内置控制器一样好的东西。 – 2011-03-10 20:06:08

+0

为什么不简单地重写你的子类中的绘图方法? – 2011-03-10 20:06:51

+1

@Dave我这样做主要是作为一个学习练习:)只是想看看我是否可以做到这一点,从来不想取代苹果的tabbar(这太棒了)。 – spamoom 2011-03-10 20:10:30

回答

0

我怀疑,如果你没有收到触摸事件,这是因为你已经添加了超视图范围之外的子视图。如果是这种情况,您将永远不会收到触摸事件,因为触摸永远不会进入超级视图,因此永远不会进入您的子视图。

如果是这种情况,可以尝试将视图添加到窗口中。

我最近创建了一个自定义选项卡栏。这里有一些事情我了解到:

  1. 您可以UITabbar的自定义子类覆盖drawRect(或者在一个类别扩展)。然而它是有限的,你不能绘制在标签栏的边界之外。

  2. 您可以继承UITabBar并添加自定义子视图。如果您的子视图大于标签栏,请务必设置self.clipsToBounds = NO

  3. UITabbar在创建后添加自己的子视图。

  4. 通过设置self.delegate = self并实现tabbar委托方法,您可以挂钩到自定义子类中的触摸事件中。

我会继续从头开始实施标签栏,这将是一个很好的学习经验,就像你说的。

+0

我把这个标记为答案,因为它回答了我的问题。但是,不是戴夫德隆的评论,这证明了一个非常好的点:) – spamoom 2011-03-11 00:30:09

+0

而不是,我的意思是说:) – spamoom 2011-03-12 09:47:01