gpt4 book ai didi

objective-c - 如何阻止 UIScrollView 从其父 View 获取触摸事件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:59 26 4
gpt4 key购买 nike

我有一个包含 UIScrollViewUIView。此 UIView 应该响应某些触摸事件,但由于它包含 scrollView 而没有响应。

此 scrollView 的 contentView 设置为 OuterView 内的 MoviePlayer。现在,每当我点击 MoviePlayer 所在的区域时,我的 OuterView 的触摸事件都没有响应。

我什至将电影播放器​​的 userInteraction 设置为 NO

但现在看来 scrollView 正在干扰。

我已经在 SO 本身上引用了这篇文章。

How can a superview interecept a touch sequence before any of its subviews?

但是那里的解决方案要求我将 ScrollView 的 userInteractionEnabled 设置为 NO但如果我这样做,我的双指缩放也不会发生!

怎么办?

最佳答案

UIScrollView 会拦截所有触摸事件,因为它必须决定用户是否/何时移动手指以滚动 ScrollView 。你可能想子类化 UIView,然后在

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)evt;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt;

方法,检查必要的接触,然后将所有这些方法转发给您的 UIScrollViewInstance。例如:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface MyView: UIView {
UIScrollView *scrollView;
}

@end

@implementation MyView

/* don't forget to alloc init your ScrollView init -init
and release it in -dealloc! Then add it as a subview of self. */

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt
{
/* check for a gesture */
[scrollView touchesBegan:touches withEvent:evt];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)evt;
{
/* check for a gesture */
[scrollView touchesMoved:touches withEvent:evt];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt;
{
/* check for a gesture */
[scrollView touchesEnded:touches withEvent:evt];
}

@end

关于objective-c - 如何阻止 UIScrollView 从其父 View 获取触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063556/

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