1

たとえば、次のようなUILabel多くのユーザー プロファイルへのリンクを表示したいと思います。

「[John]、[Josef]、[Doe]、[May]、[You] が好き」」

アイデアは、すべての[name]が異なる TapGestureRecognizer を呼び出すというものです。

別のオプションを作成UILabelsして文字列のように連結することもできますが、その方法もわかりません。

4

2 に答える 2

1

表示されたテキスト内のタップ可能な個々の単語は、すでに発明されていますUIWebView。ラベルの代わりに使用してください。テキストをHTMLとしてフォーマットし、それぞれの名前をリンクにし、Webビューのデリゲートメソッドを使用して、何がタップされたかを確認します。

于 2013-03-08T07:55:10.123 に答える
1

確かに、UIView の特定のセクションだけにジェスチャ レコグナイザーをアタッチすることはできません。そして、Label は単一の UIView であるため、これら 2 つの部分だけを使用して、touchesBegan をインターセプトし、それがどの単語であったかのベース ドン タッチ座標を把握しようとする以外に解決策はありません。

そのルートに行きたい場合は、これが役に立ちます:

NSString* text = @"John";
CGSize size = [text sizeWithFont:font];

これにより、特定のフォント (ラベルが使用しているフォント) で描画されたテキストのサイズを把握し、恐ろしい計算を行って単語がどこにあるかを把握し、タッチ位置を比較することができます。

もう 1 つの可能性は、単語ごとに個別の UILabels を使用することです。繰り返しますが、sizeWithFontこれを使用して、各ラベルの label.frame.size.width を指定されたテキストにちょうど合うように設定しています。次に、すべてのラベルの .frame を設定するコードを記述して、それらが互いに隣り合うようにします。

NSString* text = @"John";
CGSize size = [text sizeWithFont:font];
CGRect frame = myUILabelObject.frame;
frame.size.width = size.width;
myUILabelObject.frame = frame;
// Now next label, setting label.frame to position it next to this label.
于 2013-03-08T07:27:20.910 に答える