我们需要制作一个滚动视图,只有当用户在屏幕上的某个区域滑动时才会滚动,这不在滚动视图中。
所以我创建了一个工作得很好的滚动视图,现在我正在努力找到一种方法来禁用滚动条内的滚动,并以某种方式读取用户在相关区域(某些条带视图)中滑动,然后发送滑动到滚动条,而不是以编程方式滚动:
[scrollView setContentOffset:CGPointMake(x, y) animated:YES];
这是实现这一目标的正确方法,还是有一些开箱即用的方式?
如何禁用滚动条内的滚动选项(没有禁用其中的触摸 - 因为他内部有一些tableView),而不仅仅是以编程方式滚动?
编辑 ::
我设置了
[self.scrollView setPagingEnabled:YES];
[self.scrollView setScrollEnabled:NO];
没有启用滚动。比在该视图中滑动时我试图用:
移动滚动条 **[self.scrollView scrollRectToVisible:CGRectMake(scrollXPo+10, y, width, height) animated:YES];**
但是,它移动了10个像素,而不是它不再移动,这个星座中的寻呼也不起作用。
EDIT2
将其更改为:
self.scrollView.contentOffset.x+40
有效,但尚未分页..
我如何解决这些小事?
答案 0 :(得分:1)
您可以将UIScrollView
' s scrollEnabled
设置为NO
以禁用按触摸滚动,但仍保留滚动代码的可能性。然后,您可以使用setContentOffset:animated
根据需要将视图滚动到相关的可见区域(相关区域中的swipine)。
正如UIScrollView's documentation所说:
确定是否启用滚动的布尔值。 如果此属性的值为
YES
,则启用滚动,如果为NO
,则禁用滚动。默认值为YES
。 滚动禁用时,滚动视图不接受触摸事件;它将它们转发给响应者链。
答案 1 :(得分:0)
您可以获取有关触摸事件的视图信息,因此只需触摸视图并检查触摸的视图是否为滚动视图/视图,然后不执行滚动
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([[touch view] isKindOfClass:[UIScrollView class]]) {
//do not perform programmatically scrolling
}
else
{
//do your scrolling here
}
}