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 !!!
簡単な解決策を見つけました。 asyncimageviewを次のように設定する必要がありました。
asyncImage.userInteractionEnabled = NO;
asyncImage.exclusiveTouch = NO;
この後、うまくいきました!
試してください:
[UIButton buttonWithType:UIButtonTypeCustom];
の代わりに:
[UIButton buttonWithType:UIButtonControlType];
入れようとしましたか:
[asyncImage setUserInteractionEnabled:YES];
ここで重要なことは、userInteractionEnabled
がNO
に設定されることを確認することです。幸いなことに、UIImageView
およびUILabel
に対してすぐに動作します(UIView
の他のサブクラスの場合もありますが、ボタンに追加される最も一般的なサブビューです)。デフォルトではNO
に設定されます。残念ながら、YES
でUIView
に設定されているため、その場合は必ず変更してください。他のフラグをいじる必要はありません。問題の性質は、このフラグのデフォルト値がサブクラスで異なることを多くの人が知らないことです。
同じ状況でこのアクションを作成します:UIButtonから継承し、ボタンのすべてのラベルと画像ビューを自分に追加し、最後に新しいボタンを最後のサブビューとして表示し、この最後のボタンにセルフボタンのターゲットを追加します(透明の背景色をclearColorに設定します)。これでクリック可能になり、正常に動作します。
Swiftで、UIButtonがブロックされていることをテストします
uibtn.userInteractionEnabled = false
uibtn.exclusiveTouch = false