UIButtonを使用してメニューを作成しようとしていますが、一度に1つのボタンしか選択できないようにしたいだけです。魔女とは、ボタンを選択すると、もう一方のボタンの選択が自動的に解除されることを意味します。しかし、それは奇妙な振る舞いをしていて、私はその理由がわかりません。
メニューからボタンを選択すると赤になり、別のボタンを選択すると両方とも赤になりますが、最初のボタンを2回クリックして黒にする必要があり、2番目のボタンも同じです。問題は、2番目のボタンをクリックすると、最初のボタンが赤のままではなく黒になっているはずです。
この関数は、addTargetでボタンが押されたときに呼び出されます。
- (void)putInSelectedMode:(id)sender {
NSLog(@"[%d] %s => %s", __LINE__, __FUNCTION__, __FILE__);
if ([sender isKindOfClass:[UIButton class]]) {
sender = (UIButton*)sender;
if ([sender isSelected])
{
[sender setSelected:NO];
[[sender layer] setShadowColor:[[UIColor clearColor] CGColor]];
[[sender layer] setBorderWidth:0.0f];
}
else {
UIButton *btn = nil;
NSArray *subviews = [self subviews];
for (btn in subviews) {
if ([btn isKindOfClass:[UIButton class]]) {
[btn setSelected:NO];
}
}
[[sender layer] setBorderWidth:5.0f];
[[sender layer] setBorderColor:[[UIColor redColor] CGColor]];
[[sender layer] setOpaque:NO];
[sender setSelected:YES];
}
}
}