Как я могу отключить UISegmentedControl? - PullRequest
8 голосов
/ 07 ноября 2011

У меня есть следующий UISegmentedControl, который я хочу отключить:

-(void)displayCheckMark
{
    titleSegmentedControl = [[UISegmentedControl alloc] initWithItems:nil];
    [titleSegmentedControl insertSegmentWithImage:[UIImage imageNamed:@"symbolbg.png"] atIndex:0 animated:YES];
    [titleSegmentedControl insertSegmentWithImage:[UIImage imageNamed:@"inwatchlist.png"] atIndex:1 animated:YES];
    [titleSegmentedControl addTarget:self action:@selector(titleBarButtonChanged:)forControlEvents:UIControlEventValueChanged];
    titleSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    titleSegmentedControl.frame = CGRectMake(100,0,100,30);
    titleSegmentedControl.momentary = YES;
    titleSegmentedControl.tintColor = [UIColor blackColor];
    self.navigationItem.titleView = titleSegmentedControl;

    [titleSegmentedControl setWidth:60 forSegmentAtIndex:0];
    [titleSegmentedControl setTitle:symbol forSegmentAtIndex:0];
    [titleSegmentedControl setWidth:30 forSegmentAtIndex:1];
    [titleSegmentedControl setEnabled:NO];
}

Я не включил его нигде в коде. Тем не менее, я все еще могу нажать на него, и он выполнит действие в titleBarButtonChanged:

Как я могу убедиться, что на него нельзя нажать?

Ответы [ 3 ]

18 голосов
/ 07 ноября 2011

Попробуйте использовать:

- (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment;

или

titleSegmentedControl.userInteractionEnabled = NO;
3 голосов
/ 07 ноября 2011

В пределах titleBarButtonChanged:(id)sender добавить:

if(!sender.enabled) return;
0 голосов
/ 22 января 2019

Я написал этот метод для этого:

func setEnabledSegmentedControl(enabled: Bool) {
    for segmentIndex in 1..<segmentedControl!.numberOfSegments {
        segmentedControl.setEnabled(enabled, forSegmentAt: segmentIndex)
    }
}
...