gpt4 book ai didi

iOS 11 打破了行选择

转载 作者:行者123 更新时间:2023-11-29 00:12:56 24 4
gpt4 key购买 nike

我最近在 iOS 11 中测试了我的应用程序,由于某种原因,我无法在动态填充的 TableView 中选择前 12 行之一。这些行甚至不会触发 didSelectRow。其他行工作正常,但即使向下和向后滚动(届时单元格应该已再次使用),前 12 行也不起作用。

即使在静态 TableView 上,切换到该 View Controller 时出现在屏幕上的所有单元格也不会响应,它们内部的控件也不会响应,即使它们位于不同的部分。最初超出屏幕的单元格再次工作正常。

我将尝试在带有样板代码的应用程序中测试这一点,但这是一个已知的错误吗?我在网上找不到任何相关信息。

我在将设备更新到 iOS 11 后对此进行了测试,然后在不更改代码的情况下从 Xcode 9 beta 6 再次进行了测试,并在迁移到 Swift 4 后再次进行了测试。模拟器内的行为相同。在 iOS 10 之前一切正常,只有 iOS 11 才会出现问题。

这将在两周内破坏我的用户应用程序,我需要修复它,因此非常感谢任何帮助或建议!

更新: 正如 Paulw11 所建议的,确实有另一个 View 阻塞了行。值得注意的是,第 12 行只能在单元格的下部选择,而不能在上部选择。

此问题的原因是以下代码:

extension UIViewController {

func setBackgroundImage(forTableView tableView: UITableView) {
let bgImage = UIImage(named: "Background Image.png")

let bgImageView = UIImageView(image: bgImage)
tableView.backgroundView = bgImageView

let rect = bgImageView.bounds
let effect = UIBlurEffect(style: UIBlurEffectStyle.dark)
let blurView = UIVisualEffectView(effect: effect)

let height: CGFloat

switch screenSize.height {
case 480, 568: height = 455
case 736: height = 623
default: height = 554
}

blurView.frame = CGRect(x: 0, y: 0, width: rect.width, height: height)

let container = UIView(frame: rect)
bgImageView.addSubview(blurView)

let bgOverlay = UIImage(named: "Background Overlay.png")
let bgOverlayImageView = UIImageView(image: bgOverlay)
bgOverlayImageView.alpha = 0.15
bgImageView.addSubview(bgOverlayImageView)

self.view.insertSubview(container, at: 1)

}
}

不知何故,从 iOS 11 开始,这个背景图像似乎呈现在单元格前面。不将容器 View 插入 TableView 的 View 将解决该问题。我尝试过设置容器层的 zPosition,但没有帮助。如何再次将背景图像移动到单元格后面。奇怪的是,这种行为从 iOS 10 到 11 会发生变化......

更新 2:在索引 -1 处插入容器修复了问题:

self.view.insertSubview(容器,位于:-1)

我不明白为什么这会起作用,但是这个索引不应该超出范围吗?

更新 3: 正如 Paulw11 在下面指出的那样,该容器完全没用,它是测试遗留下来的,删除它可以解决问题。

最佳答案

container View 似乎出现在其他 View 的前面,并阻止触摸到达 TableView 。

顺便说一句,我会看看您是否可以重构它以使用约束;当您看到硬编码的屏幕尺寸时,我总是很担心,因为它可能会在新设备发布时中断。

关于iOS 11 打破了行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902657/

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