Objective c 在UIScrollView中使用更小的UIView来停止触摸

Objective c 在UIScrollView中使用更小的UIView来停止触摸,objective-c,ios,uiscrollview,uitouch,uiscrollviewdelegate,Objective C,Ios,Uiscrollview,Uitouch,Uiscrollviewdelegate,我已经阅读了关于这个问题的各种线索,但是没有一个能给出我所需要的确切解决方案,但是它们已经让我非常接近了 我有最顶层的UIViewController,它包含一个分页UIScrollingView(通过xib创建) UIScrollingView加载一个虚拟ViewController数组,当用户在页面中滑动时,这些虚拟ViewController被交换为各种ViewController 其中一个子视图包含一组滑块-通常的问题是:如果用户稍微错过了一个滑块,他们就会滚动页面 在子视图中,我在部分

我已经阅读了关于这个问题的各种线索,但是没有一个能给出我所需要的确切解决方案,但是它们已经让我非常接近了

我有最顶层的UIViewController,它包含一个分页UIScrollingView(通过xib创建)

UIScrollingView加载一个虚拟ViewController数组,当用户在页面中滑动时,这些虚拟ViewController被交换为各种ViewController

其中一个子视图包含一组滑块-通常的问题是:如果用户稍微错过了一个滑块,他们就会滚动页面

在子视图中,我在部分覆盖屏幕的滑块后面放置了一个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");
    }
}

因此,现在我可以通过测试UIview的类“MyView”来检测用户何时触摸安全区域UIview,但我不知道如何告诉父UIScrollView中止或只是触摸那里,然后在UISlider后面放置一个透明的UIview按钮。该按钮将“吃掉”触摸并防止滚动。

我的应用程序也有类似问题。滚动视图包含一个子视图,该子视图包含自己的子视图。当子视图出现时,scrollview需要不能滚动。我通过在子视图中发布通知并在滚动视图控制器中侦听来合并通知。我已经在我的帖子上发布了所有代码:


我知道你使用隐形按钮技术已经有几个月了,但是如果你仍然在寻找一种编码方法来完成它,或者其他人发现了这个线程,我想我会与你分享。如果您想帮助将我的代码翻译成您的代码,请告诉我,我会尽我所能。

PS我有一个Ocman剃须刀解决方案,在滑块后面放置一个巨大的按钮,它会吃掉触摸,但这似乎是一个黑客行为,而不是编写应用程序来正确响应触摸。我就是这么做的。。。看到我的评论了,但我想应该有一个合适的方法来做?