電話番号検出時の TextView のエラー IOS 9 質問する

電話番号検出時の TextView のエラー IOS 9 質問する

iOS 9 を実行している iPod Touch でアプリをテストしています (iOS 8.4 では FaceTime、連絡先へのコピーなどの他の機能は動作していました)。電話番号検出機能を備えたテキストビューがあり、次のエラーが表示されます。

警告: ビューがウィンドウ階層にない <_UIRotatingAlertController: 0x16250e00> を表示しようとしました。

-[UITextView startInteractionWithLinkAtPoint:]、/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3505.16/UITextView_LinkInteraction.m:377 でアサーションに失敗しました

これに対する修正方法はありますか?

ベストアンサー1

完璧な解決策ではありませんが、非常にシンプルで、困っている開発者の助けになるかもしれません。

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    [[UIApplication sharedApplication] openURL:URL];

    return NO;
}

長押しすると、[コピー]、[URL を開く]、[キャンセル] ポップオーバーは表示されなくなりますが、少なくとも以前と同じように URL を開くことができるはずです。iOS 9 では、これにより、標準 URL のアプリ内でブラウザー ウィンドウが開きます (これは便利です)。

これは Apple のバグのようです (すでにレーダーに投稿されています)。

Apple が新しいモーダル アラート ビューを表示しようとしているため、モーダル ビューでリンクを開こうとすると、非常によく似たエラーが発生していました。モーダル ビュー外のデータ検出は、iOS 9 では問題なく機能しました。

おすすめ記事