In 一款 iPhone 文字游戏 https://github.com/afarber/ios-newbie/tree/master/Scroll我有一个UIScrollView
(保持UIImageView
) 和 7 个可拖动自定义UIView
s 最初放置在底部(并且在滚动视图之外):
在单曲中视图控制器.m https://github.com/afarber/ios-newbie/blob/master/Scroll/Scroll/ViewController.m我已经覆盖了viewDidLayoutSubviews
这样它总是设置zoomScale
滚动视图的 - 拥有UIImageView
恰好填充屏幕宽度的 100%。
这对于纵向和横向模式都很有效。当应用程序刚刚启动时:
我的问题然而,当我第一次捏/缩放/双击滚动视图,然后移动七个Tile.m https://github.com/afarber/ios-newbie/blob/master/Scroll/Scroll/Tile.m views:
突然(不是每次)viewDidLayoutSubviews
之后被调用touchesBegan
.
这会重置滚动视图的缩放 - 对于用户来说是出乎意料的。
我的问题是否有任何方法可以禁用这种行为?
是否可以预防viewDidLayoutSubviews
当其子级时,父级的调用UIView
是否被触摸/拖动?
UPDATE:
我已经移动了zoomScale
设置代码来自viewDidLayoutSubviews
to didRotateFromInterfaceOrientation
滚动视图缩放现在可以了,但是它contentOffset
被重置为{0,0}
,当(并非总是)我拖动一个图块时 - 即滚动视图突然跳转时,该应用程序无法使用。
将以下内容添加到viewDidLoad
没有帮助:
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)])
self.automaticallyAdjustsScrollViewInsets = NO;