我有一个iPad应用程序,它使用水平滚动视图和一组控件作为子视图。用户必须能够使用滚动视图内的所有控件,并且只有在他们故意从屏幕的左边缘或右边缘外侧拖动手指时才滚动视图。
我已经通过将此代码放在UIScrollView的pointInside:forEvent:方法中实现了这一点。
- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event {
// scroll the view if the user's finger has dragged from off-screen.
[self setScrollEnabled:(point.x - self.contentOffset.x < 9 || point.x > self.contentOffset.x + self.frame.size.width - 9) ||
self.isDecelerating];
return [super pointInside:point withEvent:event];
}
当iPad位于UIInterfaceOrientationLandscapeRight
(屏幕右侧的主页按钮)时,我可以将手指从右侧或左侧向外拖动,UIScrollView
按预期滚动。但是,当我切换方向时,从左侧(主页按钮)拖动可以正常滚动,而右侧(靠近相机)仅在大约50%的时间内工作。
我已经尝试将滚动视图的框架扩展到略微超出屏幕范围的范围,但我仍然只在UIInterfaceOrientationLandscapeLeft
的一侧上遇到此类手势的问题。想法?
编辑:我为屏幕两侧添加了两个UIScreenEdgePanGestureRecognizers
- 手势现在响应更快,但是当主页按钮位于屏幕上时,从屏幕右侧拖动左边仍然是粗略的。我不知道为什么会出现这种界面方向。