sub*_*hap 41 touch uikit uiresponder ios
当父视图具有userInteractionEnabled = NO时,即使其userInteractionEnabled属性设置为YES,其子视图也不会接受触摸事件.
有没有办法在子视图中获取触摸事件?
Nik*_*kso 74
要获取视图以允许触摸传递但是为其子视图处理触摸,请将该视图上的userInteractionEnabled设置为YES,而是使用此代码段:
-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
id hitView = [super hitTest:point withEvent:event];
if (hitView == self) return nil;
else return hitView;
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://cocoaheads.tumblr.com/post/2130871776/ignore-touches-to-uiview-subclass-but-not-to-its
小智 6
Swift 解决方案 - 您需要为父视图创建一个自定义视图类,并向其中添加以下代码。请保持父视图的用户交互处于启用状态。
我希望下面的代码对您有所帮助。
class MyCustomParentView: UIView {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let hitView = super.hitTest(point, with: event)
if hitView == self {
return nil
} else {
return hitView
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14246 次 |
| 最近记录: |