2

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];
        }
    }
}
4

0 に答える 0