【发布时间】:2013-10-14 19:47:19
【问题描述】:
我在 iOS 7 中开启 VoiceOver 时遇到了一些问题。我确实在 viewDidLoad 中注册了一个 UITableViewHeaderFooterView 子类的实例,但是当我使用 -[tableView dequeueReusableHeaderFooterViewWithIdentifier:] 对其进行 dequeque 时,它总是返回 @987654324 @对象。
问题开始出现在 iOS 7.0 上。它在以前的版本中不存在,如果它在 6.0 和 7.0 上都可以在没有 VoiceOver 的情况下完美运行,那么它肯定可以正常工作
我可以不使用自定义标头,或者在dequeueReusableHeaderFooterViewWithIdentifier: 返回 nil 时实例化一个新对象。但我想知道是否存在与此相关的已知问题。
干杯,
【问题讨论】:
-
您是否获得了更多相关信息?对我来说,它永远不会返回 nil,即使它第一次命中 dequeueReusableHeaderFooterViewWithIdentifier:,而是返回带有帧 (0,0,0,0) 的 tableviewheader
-
我的一位同事在一次技术会谈中与一位 Apple 开发人员进行了交谈,他们说这可能存在一些问题,他们正在研究它 :) 最后,当我得到nil,我只是从 NIB 实例化视图并返回它。
-
我认为自己加载笔尖并返回单元格对象是您最好的选择。我今天刚刚打了这个,看起来标题单元格的 init/initWithFrame 正在被调用,它忽略了 nib 文件。因此,您最终会得到一个没有连接任何插座的单元。
-
@ScottK。这太有趣了。为什么框架会调用 initWithFrame 而不是从 nib 初始化它
-
从堆栈跟踪来看,可访问性支持中的某些东西正在调用 cell.view,它将使用注册类的默认初始化程序。这调用了 init,它调用了 initWithFrame。
标签: uitableview ios7 voiceover