web-dev-qa-db-ja.com

addSubViewをUIButtonに

UIButtonにサブビューを追加しようとしています。これは現在正常に機能しています。しかし、サブビューを追加するとすぐにボタンはクリックできなくなります。

私は次のコードを使用します:

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(column*100+24, row*80+10, 64, 64);
[button addSubview:asyncImage];
[button addSubview:price];
    [button addTarget:self 
               action:@selector(buttonClicked:) 
     forControlEvents:UIControlEventTouchUpInside];

2つのaddsubviewsを切り取ると、ボタンは再び機能します。誰かがこれを修正する方法を知っているなら、それは素晴らしいでしょう!

THNX !!!

43
Jos

簡単な解決策を見つけました。 asyncimageviewを次のように設定する必要がありました。

asyncImage.userInteractionEnabled = NO;
        asyncImage.exclusiveTouch = NO;

この後、うまくいきました!

75
Jos

試してください:

[UIButton buttonWithType:UIButtonTypeCustom];

の代わりに:

[UIButton buttonWithType:UIButtonControlType];

3
user842059

入れようとしましたか:

[asyncImage setUserInteractionEnabled:YES];
1
Matteo Alessani

ここで重要なことは、userInteractionEnabledNOに設定されることを確認することです。幸いなことに、UIImageViewおよびUILabelに対してすぐに動作します(UIViewの他のサブクラスの場合もありますが、ボタンに追加される最も一般的なサブビューです)。デフォルトではNOに設定されます。残念ながら、YESUIViewに設定されているため、その場合は必ず変更してください。他のフラグをいじる必要はありません。問題の性質は、このフラグのデフォルト値がサブクラスで異なることを多くの人が知らないことです。

1
Julian Król

同じ状況でこのアクションを作成します:UIButtonから継承し、ボタンのすべてのラベルと画像ビューを自分に追加し、最後に新しいボタンを最後のサブビューとして表示し、この最後のボタンにセルフボタンのターゲットを追加します(透明の背景色をclearColorに設定します)。これでクリック可能になり、正常に動作します。

1
Valerii Pavlov

Swiftで、UIButtonがブロックされていることをテストします

uibtn.userInteractionEnabled = false
uibtn.exclusiveTouch = false
0
YannSteph