web-dev-qa-db-ja.com

UIButtonのハイライトコントロール状態を無効にする方法は?

選択されたときに、タッチされたときに状態を変更しないUIButtonがあります。デフォルトの動作では、タッチされている間はUIControlStateHighlightedになり、これが私を怒らせています。

提案?

138
kbanman

ボタンのbuttonTypeをカスタムに設定する必要があります。

IBでは、「ハイライトで画像を調整」のチェックを外すことができます。

プログラムでtheButton.adjustsImageWhenHighlighted = NO;を使用できます

「無効」状態でも同様のオプションを使用できます。

290
Haydn

IBで「ハイライト調整画像」のチェックを外すという上記の回答に加えて、ボタンタイプがカスタムに設定されていることを確認してください。

37
Mosib Asad

これはあなたのために働くでしょう:

[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

3行目はここでのトリックです...

これは、image/backgroundImageの設定と同じように機能します

34
Manish Ahuja
adjustsImageWhenHighlighted = NO;
26
KETAN
button.adjustsImageWhenDisabled = NO;

無効なボタンを独自に表示する場合にも同様に便利です。

23
Tim

ボタンのデフォルト状態から強調表示状態への変更に応じて、いくつかのメソッドを呼び出して必要なものに設定できます。したがって、画像が変更された場合は、次のことができます

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];

テキストが変更された場合、できること

[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

他の同様の機能:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state

4
Dimitris

OK私にとっては、TouchUpInsideでは問題ありませんでした。

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}
3
therealbuckley

Swiftty開発者向け-

yourButton.adjustsImageWhenHighlighted = false
3
iDeveloper

Swift 3 +

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false
3
yuanjilee

同様の問題があり、インターフェイスビルダーの「チェックを外す」ことでグラフィックコンテンツがクリアされることが問題を修正したことがわかりました。

enter image description here

2
Jeff

ただ二つのこと:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
2
Alok

ボタンのタイプを「カスタム」にし、「チェックを外す」を強調表示して、画像を調整します。これで完了です。

2
Khushboo