質問

さて、私は持っています UILabel インターフェイスビルダーで作成された「Tap to Begin」のデフォルトのテキストを表示します。

ユーザーがタップするとき UILabel ibactionメソッドをトリガーしてほしい:-(IBAction)next; これは、ラベルのテキストを更新して、何か新しいことを言っています。
これにより、接続をメソッドからラベルに単純にドラッグし、ボタンのように内部のタッチアップを選択できる場合は、本当に便利です。しかし、悲しいかな、葉巻はありません。

とにかく、私の質問は、私はサブクラスをしなければならないと思います UILabel これを機能させるには?または、ラベルの上にボタンをドラッグする方法がありますが、0%不透明にします。それとも、私が欠けているより簡単な解決策はありますか?

役に立ちましたか?

解決

見てみな:

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

トリックは、ユーザーの相互作用を有効にすることです。

他のヒント

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";

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

IBOutlet UILabel *label;

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

uibuttonを使用して、画像なしで透過性、すなわちカスタムタイプにし、uilabelを追加します(中心)。次に、通常のボタンイベントを配線します。

スウィフト3

あなたはiboutletを持っています

@IBOutlet var label: UILabel!

ユーザーインタラクションを有効にし、ジェスチャー認識者を追加する

label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)

そして最後に、タップを処理します

func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
  // Your code goes here
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top