【发布时间】:2012-09-14 15:37:10
【问题描述】:
我已经搜索过一个问题,但找不到明确的答案。这是我的布局:
UIView - ViewController
|_UIScrollView - added programatically
| |_UIView to hold a backgound/perimeter - added programmatically
|_UIView 1 - added programmatically
|_UIView 2 - added programmatically
and so on
我的问题是,当我移动说 UIView 2 on touch 时,为什么 ViewController 只调用一次“touchesMoved”?
现在 UIView 有它自己的 touchesMoved 方法,但我需要调用控制器的 touchesMoved,因为我需要它与 ScrollView 对话以更新其位置。比如当那个 UIView 2 靠近拐角的时候,让 ScrollView 稍微移动一下就可以完全显示 UIView 2。
如果没有办法解决这个问题,有没有办法从 UIView 2 更新 ScrollView 以在靠近角落时滚动?
编辑:
我想我可能已经找到了解决办法。不确定这是否会被 Apple 接受,但是:
我刚刚调用了一个实例变量,即 = self.superview,然后我可以在 UIView 的 touchesMoved 中与我的 ScrollView 对话
因为我可以调用方法 [ScrollView setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated] 所以当子视图 (UIView2) 靠近 UIWindow 的边缘时,我的 ScrollView 会得到更新。
感谢您的建议。
【问题讨论】:
-
如果您担心将
self.superview转换为UIScrollView并发送setContentOffset:消息,这是完全合法的。 -
太棒了!谢谢。我担心这会引起问题。非常感谢塞尔吉奥的帮助。
标签: objective-c ios uiview uiviewcontroller viewcontroller