【发布时间】:2010-09-11 17:16:59
【问题描述】:
在我的应用程序中,我有一个 UIPickerView 作为表格单元格内容视图的子视图。我禁用了表格视图中的滚动,并且在正常情况下安排工作正常。但是,我发现当 VoiceOver(或 Accessibility Inspector)打开时,只要选择器获得焦点,应用就会崩溃。
错误是:
-[UITableViewCellAccessibilityElement numberOfComponents]: unrecognized selector sent to instance 0xc15dc70
似乎正在发生的事情是,VoiceOver 正在向 UITableViewAccessibilityElement 发送可能用于 UIPickerView(或其自己的 UIAccessibilityElement?)的消息。
当我使用以下类别修补 UIAccessibilityElement 时...
@implementation UIAccessibilityElement (GMPatches)
- (NSInteger)numberOfComponents {
return 0;
}
@end
...我消除了崩溃 - 但现在,不出所料,VoiceOver 无法更改 UIPickerView 值。
如果我在这种情况下将其更改为真实值...
@implementation UIAccessibilityElement (GMPatches)
- (NSInteger)numberOfComponents {
return 1;
}
@end
...然后,VoiceOver 发送下一条地址错误的消息,再次将所有内容都搞砸了:
-[UITableViewCellAccessibilityElement selectedRowInComponent:]: unrecognized selector sent to instance 0x1e97b0
我很确定这是一个 iOS 错误。
我尝试在选择器、表格单元格和表格单元格的内容视图上设置isAccessibilityElement = NO,但都没有帮助。
我想我也许可以扩展上面的 UIAccessibilityElement 类别来将各种消息转发到其父单元格的子 UIPickerView。但这感觉就像是令人不快的脆弱骇客。
有什么更好的想法可以解决这个问题吗?
【问题讨论】:
-
嗯,我刚刚在 IB 中放置了一些 appkit 的东西,我遇到了一些非常疯狂的崩溃。我很确定其中有很多错误。
-
Justin Meiners:不过,那是 Cocoa。 jawj 询问有关 Cocoa Touch 的问题。
-
向 Apple 提交错误。除此之外,我不知道。
标签: iphone cocoa-touch uikit uitableview uipickerview