私は問題があります。私のアプリの一部では、表にテキストを表示する必要があります。テキストは選択/コピー可能 (編集不可) である必要があり、テキスト内のすべての URL を強調表示する必要があり、タップするとその URL を取得して組み込みブラウザーを開くことができます。
これらの問題のいずれかを解決するソリューションをいくつか見てきましたが、両方を解決することはできません。
解決策 1: Icon Factory の IFTweetLabel
私が最初に試した解決策は、Icon Factory によって可能になり、Twitterrific で使用されている IFTweetLabel クラスを使用することでした。
このソリューションでは、リンク (または正規表現で見つけることができるもの) を検出してケースバイケースで処理できますが、選択してコピーすることはできません。
また、URL がラップできるほど長い場合、クラスが URL の上にオーバーレイしてインタラクティブにするボタンがラップできず、画面からはみ出して非常に奇妙に見えるという問題もあります。
解決策 2: IFTweetLabel を使用してコピーを手動で処理する
次に試みたのは、IFTweetLabel をそのままにしてリンクを処理することでしたが、SMS アプリがそれを処理するのと同じように、ロングタップ ジェスチャを使用してコピーを実装しました。これは機能するだけでしたが、テキストを任意に選択することはできず、テキスト全体がコピーされるか、まったくコピーされません...かなり白黒です。
解決策 3:UITextView
私の 3 番目の試みはUITextView
、テーブル セルのサブビューとして a を追加することでした。
これで解決しない唯一のことは、検出された URL を処理できないことです。テキスト ビューでは、アプリを終了して Safari を起動するUIApplication
'sメソッドを使用します。openURL:
また、テーブル ビューが非常に大きくなる可能UITextView
性があるため、サブビューとして追加された の数により、特に iPhone 3G 時代のデバイスでは、テーブル全体のスクロールでパフォーマンスが著しく低下します (セルがスクロールされるたびに作成、レイアウト、合成が行われるため)。画面など)。
そこで知識のある皆さんに質問です。私に何ができますか?
UIWebView
最良の選択肢でしょうか?パフォーマンスの低下は別として、webview は上記の問題をすべて解決すると思います。私の記憶が正しければ、2.0 の頃、Apple のドキュメントでは、テキストの書式設定/ハイパーリンクが必要な web ビューが実際に推奨されていました。
パフォーマンスを低下させずにこれを達成する方法を考えられる人はいますか?
助けていただけるすべての人に前もって感謝します。