gpt4 book ai didi

objective-c - UIScrollView 中更小的 UIView 以停止触摸

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:51 27 4
gpt4 key购买 nike

我已经阅读了有关此的各种主题,但没有一个给我提供我需要的确切解决方案,但它们让我非常接近

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

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

其中一个 subview 包含一堆 slider - 通常的问题是:如果用户稍微错过了一个 slider ,他们就会滚动页面。

在 subview 中,我在部分覆盖屏幕的 slider 后面放置了一个 UIView:'uiviewblocker'

这个想法是这个“uiviewblocker”会吃掉 slider 周围紧邻区域的所有触摸,但 uiview 外的滑动由父 UIViewController 处理。我将 UIView“uiviewblocker”子类化为一个重复的 UIViewController“MyView”,这样我就可以检测到它。

我已经做到了……

父 UIScrollView:

scrollView.delaysContentTouches = NO;

subview 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 中止或只是触摸那里然后

最佳答案

在 UISlider 后面放一个透明的 UIButton。该按钮将“吃掉”触摸并阻止滚动。

关于objective-c - UIScrollView 中更小的 UIView 以停止触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com