iOS开发:设置vwButtons层级后可见但点击事件不触发求助
iOS按钮可见但无法响应点击的解决办法
检查上层遮挡视图的交互开关:如果按钮上方的那些视图开启了
userInteractionEnabled,哪怕被zPosition压到视觉下层,也会拦截点击事件。把这些遮挡视图的userInteractionEnabled设为NO即可,代码示例:// Swift topBlockingView.isUserInteractionEnabled = false // Objective-C topBlockingView.userInteractionEnabled = NO;确认按钮及父视图的交互状态:别漏了检查按钮自身的
isUserInteractionEnabled是否为YES,同时保证按钮所在容器vwButtons的交互也没被禁用。规范视图层级调整方式:直接改图层
zPosition容易和UIKit的视图层级管理冲突,建议删掉vwButtons.layer.zPosition = 1000,只调用self.view.bringSubviewToFront(vwButtons),之后强制刷新布局:self.view.bringSubviewToFront(vwButtons) self.view.layoutIfNeeded()排查点击区域是否越界:如果
vwButtons的父视图开了clipsToBounds = YES,或者按钮的frame超出了父视图的范围,也会导致点击无效。可以通过调试查看按钮的实际可点击区域,调整父视图的裁剪设置或者按钮位置。用
hitTest定位拦截视图:在按钮所在的父视图里重写hitTest方法,打印点击响应的视图,就能快速找到是哪个视图抢了点击事件:override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { let targetView = super.hitTest(point, with: event) print("当前响应点击的视图:\(targetView ?? UIView())") return targetView }
内容的提问来源于stack exchange,提问作者Harsh Parekh
相关产品推荐
相关产品推荐

