2011-11-25 9 views
6

Voiceoverがオンのときにプロトタイプセルを読み込もうとすると問題が発生します。アプリがクラッシュし、エラーが発生するios 5プロトタイプセルとVoiceOverの問題

これはVoiceOverがオンの場合にのみ発生し、そうでない場合はアプリが正常に動作します。どんな助け?

+0

他の誰かがこの問題に問題がある場合は、この問題についてappleにバグを提出しました。 –

+0

私は同じ問題があります!私は今日、アクセシビリティのヒントやものを私のアプリケーションに追加し始めました。それは本当に吸う。レーダーIDをここに追加して、私がバグを複製できるようにしてください。私はまだ5.1ベータ2でそのバグを取得します! –

+0

@ChristianBeerがあなたのバグをOpen Radarで見つけ、それをdupしました。 (rdar:// 10763569)ありがとう。 – edelaney05

答えて

0

私は偶然この権利を得ているのかどうかはわかりませんが、これは私にとってはうまくいっています。 UITableViewDataSourceで:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    [...] 

    UITableViewCell *standardCell; 
    if (UIAccessibilityIsVoiceOverRunning()) { 
     standardCell = [tableView dequeueReusableCellWithIdentifier:@"VO Cell"]; 
    } else { 
     standardCell = [tableView dequeueReusableCellWithIdentifier:@"Regular Cell"]; 
    } 

    //Configure the cell 
    [...] 

    return standardCell; 

} 

私はそれがVoiceOverのは、パフォーマンス上の理由でオフになっている場合のiOSは、アクセシビリティプロパティなしで細胞をキャッシュする場合であると信じています。そのため、使用する既定の識別子は、これらのプロパティを持たないキャッシュされたセルに関連している可能性があります。 VoiceOverがオンになっていて、iOSがこれらのセルをデキューしようとすると、そこにプロパティが見つからず、ブレークしません。異なる識別子を持つことで、VOがオンのときにiOSに新しいセルをキャッシュさせるように強制します。

もう一度、これは私がとしていることを前提にしていますが、このようにセルをデキューするとこの問題は発生しません。しかし、あなたが言及した方法でそれらをデキューする場合は、エラーが発生する可能性があることに注意する必要があります:

識別子が.xibファイルまたはストーリーボードに設定されているセルをデキューする場合は、下の画像のように、VO Reuse Identifierを使って別のプロトタイプセルを設定する必要があります。 Reuse Identifier set in Interface Builder

関連する問題