gpt4 book ai didi

ios - uiscrollview 不会取消 uisegmentedcontrol 的内容触摸

转载 作者:行者123 更新时间:2023-11-29 13:21:05 24 4
gpt4 key购买 nike

我对 UIScrollView 进行了子类化,并通过以下方式覆盖了 touchesShouldCancelInContentView: 方法:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view

{
if ([view isKindOfClass:[UIButton class]] || [view isKindOfClass:[UISegmentedControl class]]) {
return YES;
}

if ([view isKindOfClass:[UIControl class]]) {
return NO;
}

return YES;
}

它适用于 UIButton,但不适用于 UISegmentedControl。任何帮助将不胜感激

最佳答案

终于明白了。必须继承 UISegmentedControl 和 UIScrollView。

1.) 为 UISegmentedControl 添加了一个新属性:

@property (nonatomic, assign) BOOL touchProcessed;

2.) 重载了 UISegmentedControl 的以下方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (touchProcessed) {
[super touchesBegan:touches withEvent:event];
}
else {
[self.nextResponder touchesBegan:touches withEvent:event];
}
self.touchProcessed = NO;
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesMoved:touches withEvent:event];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesEnded:touches withEvent:event];
}

3.) 重载了 UIScrollview 的以下方法:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ([view isKindOfClass:[self class]])
{
return YES; //if there are two nested custom scrollviews
}

if ([view isKindOfClass:[UIButton class]] || [view isKindOfClass:[CustomSegmentedControl class]] || [[view superview] isKindOfClass:[CustomSegmentedControl class]]) {
return YES;
}

if ([view isKindOfClass:[UIControl class]]) {
return NO;
}

return YES;
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (!self.dragging) {
for (UIView *sv in self.subviews) {
if ([sv isKindOfClass:[CustomSegmentedControl class]])
{ //if there is more than one add a tag or tomething
[(CustomSegmentedControl *)sv setTouchProcessed:YES];
[sv touchesBegan:touches withEvent:event];
return;
}
}
}
}

完美运行!

关于ios - uiscrollview 不会取消 uisegmentedcontrol 的内容触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342511/

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