ScrollView在可见视图之外

时间:2011-03-26 00:46:33

标签: iphone objective-c uiview uiscrollview

我尝试创建类似于iOS4中任务菜单的东西:

(抱歉无法发布图片不够Rep)

我在那个视图上有正常的ViewController我的menuView的addSubview。我将menuViews Y设置为-95,这样我就可以将viewControllers视图向下移动95以显示菜单。但是如果menuViews Y为Negative,则menuView中的scrollView不起作用。

1 个答案:

答案 0 :(得分:1)

您的scrollview没有收到触摸输入,因为它超出了其superview(您提到的主ViewController的视图)的范围。触摸交互系统的工作方式是AppKit框架沿着视图层次结构向下测试每个视图和子视图,使用 - (BOOL)pointInside:(CGPoint)指向withEvent:(UIEvent *)事件函数。如果视图向此函数返回YES,它将使用其所有子视图重新开始该过程,直到找到仍返回YES的最低子视图。您的设置问题是Scrollview的超级视图将返回NO,因为触摸位于其上方且您的menuView甚至从未进行过测试。所以你有两个可能的解决方案:

  1. 将您的ViewControllers视图实现为UIView的子类(如果它还没有)并重载pointInside:withEvent:函数,如果触摸在其框架内,则返回YES或者如果它在menuView的范围内( ViewControllers框架减去menuView的框架。

  2. 第二个解决方案是简单地将menuView放在其superview(0,0)的原点,并将ViewControllers视图保留在(0,0)。

  3. 我建议第二个,因为它不那么复杂,而且更重要。