105

さて、UILabel「taptobegin」というデフォルトのテキストを表示するininterfaceBuilderを作成しました。

ユーザーがタップするUILabelと、IBActionメソッドがトリガーさ れます。-(IBAction)next;これにより、ラベルのテキストが更新され、何か新しいことがわかります。
これにより、接続をメソッドからラベルにドラッグしてから、ボタンのように内側のタッチアップを選択できると非常に便利です。しかし、残念ながら、葉巻はありません。

とにかく、私の質問は、UILabelこれを機能させるためにサブクラス化する必要があるのでしょうか?または、ボタンをラベルの上にドラッグしても、不透明度を0%にする方法はありますか。または、私が見逃しているより簡単な解決策はありますか?

4

4 に答える 4

255

見てみな:

UILabel *label = ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
      [[UITapGestureRecognizer alloc] initWithTarget:self 
                                              action:@selector(labelTap)];
[label addGestureRecognizer:tapGesture];

秘訣は、ユーザーとの対話を可能にすることです。

于 2011-07-15T18:52:58.140 に答える
70

UILabel は、UIResponder を継承する UIView を継承します。すべての UIresponder オブジェクトは、タッチ イベントを処理できます。そのため、ビュー (UIlabel を含む) を認識しているクラス ファイルに次のように実装します。

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;

インターフェイス ビルダーで、UILabel のタグ値を設定します。touchesBegan メソッドでタッチが発生したら、タグが属するビューのタグ値を確認します。

UITouch *touch = [touches anyObject];

if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";

IBOutlet プレフィックスを使用して UILabel インスタンス変数を宣言することにより、クラス ファイル内のコードをインターフェイス ビルダー内の UILabel オブジェクトに接続します。

IBOutlet UILabel *label;

次に、インターフェースビルダーでそれらを接続できます。

于 2010-07-03T00:37:49.920 に答える
31

UIButton を使用して、透明にします。つまり、画像のないカスタム タイプにして、UILabel を (中央に) 追加します。次に、通常のボタン イベントを接続します。

于 2010-07-03T00:48:42.357 に答える