たとえば、次のようなUILabel
多くのユーザー プロファイルへのリンクを表示したいと思います。
「[John]、[Josef]、[Doe]、[May]、[You] が好き」」
アイデアは、すべての[name]が異なる TapGestureRecognizer を呼び出すというものです。
別のオプションを作成UILabels
して文字列のように連結することもできますが、その方法もわかりません。
たとえば、次のようなUILabel
多くのユーザー プロファイルへのリンクを表示したいと思います。
「[John]、[Josef]、[Doe]、[May]、[You] が好き」」
アイデアは、すべての[name]が異なる TapGestureRecognizer を呼び出すというものです。
別のオプションを作成UILabels
して文字列のように連結することもできますが、その方法もわかりません。
表示されたテキスト内のタップ可能な個々の単語は、すでに発明されていますUIWebView
。ラベルの代わりに使用してください。テキストをHTMLとしてフォーマットし、それぞれの名前をリンクにし、Webビューのデリゲートメソッドを使用して、何がタップされたかを確認します。
確かに、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.