- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个在屏幕上显示动画的 subview ,当它出现在屏幕上时,我希望 super View (在我的例子中是背景中的 View )忽略触摸事件。我尝试了一切,但没有用。
有没有办法“强制” super View 停止接收触摸事件?
谢谢!
最佳答案
当您说父 View 时,我假设您指的是动画 View 的父 View 。 Apple 的文档对 userInteractionEnabled
没有具体说明,但我认为如果将其设置为 false,它会禁用特定 View 上的触摸事件,但不会禁用其 subview 上的触摸事件。我建议你递归地做。下面是一个代码示例,您可以使用它来禁用/启用 View 上的所有触摸事件:
- (void)setInteraction:(BOOL)allow onView:(UIView *)aView {
[aView setUserInteractionEnabled:allow];
for (UIView * v in [aView subviews]) {
[self setInteraction:allow onView:v];
}
}
然后您可以在您的 super View 上调用它 [self setInteraction:NO onView:[self superview]]
。当然,这也会禁用你的触摸事件,因为你在你的 super View 上递归地禁用它们。当然,您始终可以重新启用触摸事件 [self setUserInteractionEnabled:NO]
。
此外,Apple 的 UIView Class Reference提到一些 UI 组件重写了这个方法:
Note: Some UIKit subclasses override this property and return a different default value. See the documentation for any class you use to determine if it returns a different value for this property.
关于ios - Superview 忽略 UserInteractionEnabled = NO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968558/
我是一名优秀的程序员,十分优秀!