【问题标题】:UITableView dequeueReusableHeaderFooterViewWithIdentifier returns nil with VoiceOver on iOS 7UITableView dequeueReusableHeaderFooterViewWithIdentifier 在 iOS 7 上使用 VoiceOver 返回 nil
【发布时间】: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


【解决方案1】:

您可以使用以下方法创建自定义UITableViewHeaderFooterView

(void)registerClass:(Class)aClass forHeaderFooterViewReuseIdentifier:(NSString *)identifier

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2023-03-24
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多