強調表示された属性を使用して強調表示したいボタンがあります。Interface Builder では、Highlighted 属性が機能し、ボタンを視覚的に強調表示された状態に変更します。ただし、コードで [myButton setHighlighted:YES]; と書くと、何も変わりません。なぜこれが機能しないのかについてのアイデアはありますか?
5 に答える
この問題[button setHighlighted:YES]
は、次の実行ループで実行することで解決できます。
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
それでもうまくいかない場合は、次の代替方法を試すことができます。
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
UIButton には、Normal、Highlighted、Selected、Disable の 4 つの状態があります。
-UIButton が有効な場合、タッチすると強調表示されます。そして、離すと通常の状態に戻ります。また、コマンド [button setHighlighted:YES]; 非常に短い時間で強調表示された状態に変更し、自動的に通常に戻ります。そのため、ボタンを強調表示したままにすることはできません。
-それを維持するには、@Vineet Singh の回答の 2 つの方法を使用する必要があります。ただし、通常の状態に戻すには、Highlighted:NO を設定する必要があります。
[button setSelected:YES/NO] を使用できます。制御する必要がありますが、強調表示された状態と同じように、setImageForState、または setTitleForState が必要です。
ボタンが選択されると強調表示され ます。そのため、[button setSelected:YES];
代わりに呼び出してみてください[button setHighlighted:YES];
。