发布网友 发布时间:2022-04-26 15:28
共1个回答
热心网友 时间:2023-05-10 18:12
看开发文档上说,当手指在content上停留一段时间,并没有移动的话,才会响应content上的手势操作,而不scrolling.我的scrollview是这么设置的:self.myScrollView.delaysContentTouches = YES;self.myScrollView.CanCancelContentTouches=NO;不要告诉我把delaysContentTouches=NO,这样scrollview就没法滚动了,我要求手指点在子视图之外还是能够滚动scroll view的。////////////////////////////////////////自己写一个继承scrollview的类,然后实现那几个touch事件,在scrollview的api里面有两个方法是判断当前点击的视图是那个,你自己去找找,这里就不给你写出来了///////////////////////////////////////////////////////////上面两层的大侠,我现在就是自己写了一个继承scrollview的类,并在里面实现了touch事件,但是如果要相应touch事件,必须要先让手指在scrollview上停留一会,否则,手指一滑动,直接进scroll的事件了,根本不会触发touch事件。下面是我在scrollview里面重写的touch事件,那几个NSLog如果手指不停留,更本就不会触发!-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{NSLog(@"PageScrollView Touch begin");if(!self.dragging){[[self nextResponder] touchesBegan:touches withEvent:event];}[super touchesBegan:touches withEvent:event];}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{NSLog(@"PageScrollView Touch Move");if(!self.dragging){[[self nextResponder] touchesMoved:touches withEvent:event];}[super touchesMoved:touches withEvent:event];}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{NSLog(@"PageScrollView Touch End");if(!self.dragging){[[self nextResponder] touchesEnded:touches withEvent:event];}[super touchesEnded:touches withEvent:event];}问题解决了,四楼的1056975026所提的建议有启发意义,多谢。具体地实现有所不同,需要先将delaysContentTouches设置为NO,CanCancelContentTouches设置为YES,而后使用- (BOOL)touchesShouldCancelInContentView:(UIView *)view来决定scrollview是否需要滚动。