gpt4 book ai didi

ios - self.nextResponder 与 super for touchesMoved

转载 作者:行者123 更新时间:2023-11-28 20:34:01 24 4
gpt4 key购买 nike

这是设置。

我有一个自定义的 UIScrollView 作为 PrimeView 的 subview 。

自定义的UIScrollView可以看成是叠加的scrollview,它一开始会获取所有的触摸事件。

现在,当 ScrollView 不拖动时,我希望它将触摸事件传递给其他响应者。
下面是我目前的代码,但是我不确定这里的 self.nextResponder 和 super 之间的区别。

我不明白为什么 touchesBegan 被正确传递给父 View ,但 touchesMoved 没有传递给父 View 。

-(void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event
{
if (!self.dragging)
{
[self.nextResponder touchesBegan: touches withEvent:event];

}

[super touchesBegan: touches withEvent: event];
}

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

最佳答案

Apple 的立场是你永远不应该做这样的事情:

    [self.nextResponder touchesBegan: touches withEvent:event];

如果您这样做,您将超出 UIKit 自己的响应链向上转发消息的范围,并且结果是不确定的。

此外,在您的 touchesMoved:withEvent: 中,您将 touchesBegan:withEvent: 发送到 nextResponder,这看起来很可疑。

此外,在您的 touchesMoved:withEvent: 中,您将事件传递两次,这似乎是个坏主意。

如果您想有条件地处理拖动,最好的办法是使用 UIPanGestureRecognizer。如果识别器不接受该事件,它将正常转发到响应器链。

如果您是注册(付费)iOS 开发者,您应该可以访问 WWDC 2012 videos .我强烈建议您观看“使用 ScrollView 增强用户体验”视频。我不会多说它,因为它的内容仍在保密协议(protocol)中。

关于ios - self.nextResponder 与 super for touchesMoved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11201338/

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