Xcode 12 和 iOS 14 中的手势问题
Posted
技术标签:
【中文标题】Xcode 12 和 iOS 14 中的手势问题【英文标题】:Problem with gesture in Xcode 12 and iOS 14 【发布时间】:2020-09-21 07:29:58 【问题描述】:升级到 Xcode 12 和 ios 14 后出现问题。
场景: 我有一个嵌套的 UITableView:nestedTableView。如下所示
class GAllowGestureEventPassTableView: UITableView, UIGestureRecognizerDelegate
var allowGestureEventPassViews: [UIView] = []
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
panGestureRecognizer.cancelsTouchesInView = false
guard let otherView = otherGestureRecognizer.view else return false
print("tableView ???? : \(type(of: otherView))")
if allowGestureEventPassViews.contains(otherView)
print("allowGestureEventPassViews contains ???? : \(type(of: otherView))")
print("gesture pass ???? ")
return true
else
return false
然后我将另一个 UITableView 添加到 nestedTableView 的 allowGestureEventPassViews 数组中。所以我可以控制哪个tableView可以滚动。
self.nestedTableView.allowGestureEventPassViews.append(controller.tableView)
在 Xcode 11.7 中,iOS 14 运行良好。
日志:
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : UITableView
allowGestureEventPassViews contains ???? : UITableView
gesture pass ????
但升级到 Xcode 12 后手势看起来有所不同。 在 Xcode 12 中,手势永远不会通过 nestedTableView。
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : UITableViewCellContentView
有人有同样的问题吗?或者我对 iOS14 手势有误解。
【问题讨论】:
【参考方案1】:我找到了答案。
在 iOS14 中,由于某些原因,UITableViewCellContentView 层次结构不同。
在 tableView(_:cellForRowAt:) 我添加子视图
cell.addSubview(contentScollView)
UITableViewCellContentView 正在阻止手势。
改成
cell.contentView.addSubview(contentScollView)
这解决了我的问题。
【讨论】:
感谢您这么快发现这一点!帮了大忙 Apple 在这个 iOS14 版本上真是惹恼了我。好眼力。在我的情况下,它是 UITableViewCell 内的 UICollectionView 哇,我不敢相信,这东西把我所有的应用程序都弄乱了。他们怎么会这样?! 哇,谢谢!我永远不会发现自己:) 有人知道如何在 OBJC 中修复吗?它的工作就像魅力,但在 iOS 14 之后它就不能工作了!【参考方案2】:在目标 C 中:
[self.contentView addSubview: contentScollView];
【讨论】:
以上是关于Xcode 12 和 iOS 14 中的手势问题的主要内容,如果未能解决你的问题,请参考以下文章
ContextMenu 中的 NavigationLink 不再在 iOS14 xcode12 beta3 中工作?
从 Tab View Controller 切换到滑动手势时的 iOS Xcode 问题
SwiftUI:带有onTapGesture的列表单元格内的菜单触发手势
(Firebase Xcode 12 iOS 14)如何正确调用和设置孩子?
XCUItest addUIInterruptionMonitor 未在 iOS14 模拟器和 xcode 12 上捕获警报