12

iOS開発初心者です。この質問が既に出されているかどうかはわかりません。stackoverflow で解決策を検索してみましたが、結果が得られませんでした。

質問 :

「ここをクリックして続行します」というテキストでUILabel電話がかかってきました。myLabel

問題は、ユーザーが「クリック」のみをタップしたときにアクションを実行したいということです。

使い方はわかるUITapGestureRecognizerが、全体的に反応するUILabel。ユーザーが文字列「クリック」のみをタップしたことを検出することは可能ですか?

4

1 に答える 1

5

タッチの位置を確認して、「クリック」という言葉の上にあるかどうかを確認できます。ただし、これは完全に正確ではない可能性があり、ラベルのテキストを変更すると壊れる可能性があります。

あなたができることは、最初に以下を使用してクリックの場所を取得することです:

CGPoint location = [gesture locationInView:gesture.view];

これにより、ビュー内のジェスチャの位置が取得されます。

これを取得したら、「クリック」という単語のサイズをハードコーディングするか、ジェスチャ ラベルと同じラベルを作成して、次のようにサイズを取得できます。

UILabel *sizeLabel = //create label with same font.
[sizeLabel setText:@"Click"];
float width = [sizeLabel sizeThatFits:CGSizeMake(MAXFLOAT,MAXFLOAT)].width;

実際のラベルを作成するときにこれを行い、この幅を静的変数に保存して、一度だけ実行する必要があり、余分なラベルを作成する必要がないようにすることもできます (つまり、実際のラベルのテキストを @ に設定します)。クリックして幅を取得し、実際のテキストに設定します)。

幅、あなた、およびタップの位置を取得したら、「クリック」という単語がタップされたかどうかを比較して確認できます。

if (location.x < width) {
    //Put your tap code in here.
}
于 2013-09-08T05:42:18.663 に答える