首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 11中断行选择

iOS 11中断行选择
EN

Stack Overflow用户
提问于 2017-08-27 07:28:29
回答 1查看 589关注 0票数 0

我最近在iOS 11中测试了我的应用程序,出于某种原因,我无法在动态填充的表视图中选择前12行中的一行。对于这些行,甚至没有触发didSelectRow。其他行可以正常工作,但即使向下滚动和向上滚动(到那时应该再次使用单元格),前12行也不能工作。

即使在静态表视图上,切换到该视图控制器时显示在屏幕上的所有单元格也不会响应,即使它们位于不同的部分,它们内部的控件也不会响应。从一开始,屏幕外的单元格也可以正常工作。

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

我在将设备更新到iOS 11之后,然后再次从Xcode 9 beta 6中进行测试,没有对代码进行更改,在迁移到Swift 4之后又进行了测试。模拟器内部也是如此。直到iOS 10,一切都很好,只有iOS 11才会出现问题。

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

更新:正如建议的那样,确实有另一个视图阻塞了行。这是值得注意的,因为第12行只能在单元格的下部选择,而不能在上半部分选择。

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

代码语言:javascript
复制
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,这个背景图像似乎呈现在细胞的前面。不将容器视图插入表视图将解决此问题。我尝试过设置容器层的zPosition,但没有帮助。如何再次移动细胞后面的背景图像。奇怪的是,这种行为会从iOS 10变成11.

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

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

但我不明白为什么这个指数不应该超出范围吗?

更新3:就像Paulw11在下面指出的那样,容器是完全无用的,它是在测试和删除之后遗留下来的,解决了这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-27 09:34:02

container视图似乎出现在其他视图的前面,并阻止了对表视图的触摸。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45902657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档