1

私は問題があります。私のアプリの一部では、表にテキストを表示する必要があります。テキストは選択/コピー可能 (編集不可) である必要があり、テキスト内のすべての 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 ビューが実際に推奨されていました。

パフォーマンスを低下させずにこれを達成する方法を考えられる人はいますか?

助けていただけるすべての人に前もって感謝します。

4

2 に答える 2

1

送信ボタンを押すとすぐに、新しいアイデアがひらめきました。

私は URL をテキストとインタラクティブなインラインにすることに夢中になっていたので、それが最善の解決策ではないかもしれないとは考えていませんでした。

そのような動作を実現するには、パフォーマンスの問題に関係なく、 aUIWebViewが最適な選択であると確信しています。

ただし、より良いユーザー エクスペリエンス/インタラクションは、URL をインラインで強調表示するのではなく、バックグラウンドで配列にまとめて、セルのアクセサリ ビューとして開示ボタンを表示することでしょうか?

次に、テキストを選択してコピーするためにUITextView、データ検出器をオフにして を使用するだけで、リンクがサファリに送信されてアプリが閉じられることを心配する必要はありません。

開示ボタンがタップされると、ユーザーはテキストで見つかった URL に移動します。または、複数の URL が見つかった場合は、ユーザーに移動先を選択するためのピッカー ビューを提示します。

このアイデアに対する意見や批判は大歓迎です。

于 2010-03-25T11:27:00.390 に答える
0

編集を適用しないように UITextField Delegate メソッドをオーバーライドすることで、テキストフィールドが編集されないようにすることができます。これにより、フィールドは選択およびコピー可能のままになりますが、変更は防止されます。

より適切な質問は、実際の URL 自体を実際に表示する必要があるかどうかです。ページ/場所の名前、server.host.domain プレフィックス、またはその他の URL の要約表現だけで済むでしょうか? モバイルの制限された画面で長い URL を読み取ろうとする人はいないと思います。

URL全体を表示する必要がある場合は、詳細ビューが最適だと思います。

于 2010-03-25T12:46:52.637 に答える