回答:
ボタンのbuttonType
カスタムに設定する必要があります。
IBでは、「ハイライトで画像を調整」のチェックを外すことができます。
プログラムで使用できます theButton.adjustsImageWhenHighlighted = NO;
同様のオプションが「無効」状態でも利用できます。
上記のIBの「ハイライト調整画像」のチェックを外す回答に加えて、ボタンタイプがカスタムに設定されていることを確認してください。
これはあなたのために働くでしょう:
[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の設定と同じように機能します。
adjustsImageWhenHighlighted
プロパティはUIButton
、背景画像にのみ影響するようです。
ボタンのデフォルトからハイライト状態に何が変わるかに応じて、いくつかのメソッドを呼び出して、必要なものに設定できます。画像が変わった場合は、
[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
これがうまくいくなら、ここに簡単な解決策があります.1週間頭をぶつけてから、TouchUpInsideまたはTouchDownのIBActionメソッドの1行目で、highlighted = NOを設定するだけで、ようやくうまくいきました。私にとっては、TouchUpInsideで問題ありませんでした。
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Swift開発者向け-
yourButton.adjustsImageWhenHighlighted = false