web-dev-qa-db-ja.com

UILabelをタッチ可能にする

UILabelがあり、タッチに反応させたいと思います。ラベルの上にボタンを貼ってみましたが、そのおかげでボタンを操作することができました。しかし、ボタンを完全に透明にすることはできませんよね?ボタンのアルファを0.02に設定することはできますが、それでも背景で表示されます。これを解決する方法は?たぶん私はそれらを完全に見えなくするために他の方法でプロパティを設定することができますか?または他の解決策はありますか?

17
Jakub

まず、ボタンを使用して、ボタンのタイトルをラベルの内容に設定してみませんか?

それができない/したくない場合は、ラベルにuserInteractionEnabled = YESを設定してから、ラベルにジェスチャ認識機能を追加することもできます。

50
Ole Begemann

Swiftの場合:

label.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed"))
label.addGestureRecognizer(gestureRecognizer)

クリックしてください:

func labelPressed(){
    print("Label pressed")
    //Your awesome code.
}
8
vkalit

私は通常これを行います:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)];
[myLabel addGestureRecognizer:tap];

ラベルで機能するかどうかはわかりませんが、同じ四角形で透明なUIViewを作成し、それを上に配置します。


さて、私はチェックしました、それはUIViewでのみ機能します、しかしそれから、これをしてください:

UIView *tapView = [[UIView alloc] initWithFrame:myButton.frame];

そして、addGestureRecognizer-methodに「tapView」を配置します。

7
Jensen2k