UIButton には、通常/デフォルト、強調表示、および選択されたイメージがあります。次に、IBAction
on と呼ばれるメソッドがありTouch Down
ます。このメソッドは、選択されているかどうかに応じて、強調表示された画像を変更します。ただし、ボタンが選択されると、メソッドが呼び出されるため、ハイライト画像が変更されますが、表示されるのは、色合いのある通常/デフォルトの画像です。使用されている画像が ではないことをテストしましたnil
。選択された状態の UIButton が押されると、通常の状態が濃淡で表示されます。ハイライト画像を使用しないのはなぜですか?選択したハイライト画像を表示する別の方法はありますか?
質問する
5193 次
2 に答える
2
IBAction メソッドでハイライト状態を設定するのはなぜですか? ボタンを作成するときに、強調表示された画像をボタンに設定するだけです。自動で切り替わります。強調表示された画像が割り当てられていない場合、選択時に色合いを追加するのが「選択」のデフォルトの動作です。
Interface Builder を使用している場合は、強調表示された画像をそこに割り当てます。
IBAction メソッドをtouchUpInside
イベントに設定して、通常のボタン選択動作を探していると想定しています。
于 2012-08-21T17:13:05.407 に答える
1
選択した状態と通知を (UI 経由ではなく) 使用して、この問題を回避しました。通知が呼び出されると、デフォルト状態のイメージを変更し、選択状態を変更してから、選択状態のイメージを変更します。
更新:私と似たようなことをしていた別の質問から、はるかに良いアイデアを思いつきました。それを行う方法は、setSelected
- (void)setSelected:(BOOL)selected
{
if ( selected )
{
[self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateNormal];
[self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateSelected];
[self setImage:[CFCHStyleSheet imageForTickButtonCheckedDisabled] forState:UIControlStateDisabled];
}
else
{
[self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateNormal];
[self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateSelected];
[self setImage:[CFCHStyleSheet imageForTickButtonUncheckedDisabled] forState:UIControlStateDisabled];
}
[super setSelected:selected];
}
于 2012-10-01T15:16:55.320 に答える