Какое правильное UIControlState для нажатой кнопки UIB? - PullRequest
6 голосов
/ 03 ноября 2011

Я настраиваю UIButton программно здесь:

button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setSelected:YES];
        button.frame = CGRectMake(x, y, width, height);
        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
        [button setTitle:@"Button Title" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
        [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
        [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateSelected];
        [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted];
        [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateDisabled];

Проблема в том, что, если я удерживаю, фоновое изображение исчезнет, ​​пока я его не отпущу ...

Ответы [ 3 ]

8 голосов
/ 03 ноября 2011

Я думаю, что вы находитесь в режиме перебора :). Попробуйте установить button.png для UIControlStateNormal и buttonActive.png для UIControlStateHighlighted. Не нужно отдыхать. Посмотрите, работает ли это.

EDIT:

Также помните: Имена файлов изображений чувствительны к регистру

Тестируете ли вы на устройстве? Имена изображений чувствительны к регистру при сборке устройства, но не для симулятора. Например, если ваш фактический файл изображения называется buttonactive.png, но вы называете его как buttonActive.png из своего кода, он будет отображаться на симуляторе, но не на устройстве.

Пожалуйста, убедитесь, что регистр для обоих имен изображений соответствует имени фактического файла.

РЕДАКТИРОВАТЬ # 2:

Попробуйте этот код

button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setSelected:YES];
    button.frame = CGRectMake(x, y, width, height);
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
    [button setTitle:@"Button Title" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted];
3 голосов
/ 04 ноября 2011

Пойми, это работает так:

[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:UIControlStateSelected];
[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:(UIControlStateHighlighted|UIControlStateSelected)];
0 голосов
/ 23 марта 2015

Пока мы добавляем кнопку из IDE

образец:

.h file
-(IBAction)BtnAdd:(id)sender

в .m файле это

-(IBAction)BtnAdd:(id)sender
{
}

Это метод, который не может включать или отключать.

, поэтому, если вы хотите включить или отключить кнопку, сделайте ее -(IBOutlet)BtnAdd добавить IBOutlet в .h файл и подключить его к определенной кнопке тогда BtnAdd.enabled=NO будет работать

...