我已经阅读了这方面的各种主题,但没有一个能给我我需要的确切解决方案,但它们让我非常接近
我有最顶层的 UIViewController,其中包含一个分页 UIScrollingView(通过 xib 创建)
UIScrollingView 加载一个虚拟视图控制器数组,当用户在页面中滑动时,这些视图控制器将交换为各种视图控制器。
其中一个子视图包含一堆滑块——常见的问题:如果用户稍微错过了一个滑块,他们就会滚动页面。
在子视图中,我在部分覆盖屏幕的滑块后面放置了一个 UIView:'uiviewblocker'
这个想法是这个“uiviewblocker”会吃掉滑块周围直接区域的任何触摸,但在 uiview 之外的滑动由父 UIViewController 处理。我将 UIView 'uiviewblocker' 子类化为重复的 UIViewController 'MyView',以便我可以检测到它。
我已经到...
父 UIScrollView:
scrollView.delaysContentTouches = NO;
子视图 UIViewController
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
NSLog(@"touchesBegan");
//[self.nextResponder touchesBegan: touches withEvent:event];
UIView *touchView = [[touches anyObject] view];
if ([touchView isKindOfClass:[MyView class]]) {
NSLog(@"funky shit");
[super touchesBegan:touches withEvent:event];
//[self.delegate touchesBegan:touches withEvent:event];
//[self touchesBegain:touches withEvent:event]; // View does not respond: crashes
//UIView *parent = self.view.superview;
//[parent setCanCancelContentTouches:YES]; // UIView does not respond
//UIScrollView * parentScrollView = (UIScrollView*)self.superview; // Superview not in structure
} else {
NSLog(@"normal shit");
}
}
所以现在我可以通过测试它的类'MyView'来检测用户何时触摸安全区域UIview,但我无法弄清楚如何告诉父UIScrollView中止或只是触摸那里然后