xCode4 - Как изменить UIbutton при изменении события? - PullRequest
1 голос
/ 16 декабря 2011

У меня есть приложение, в котором при нажатии кнопки происходит действие. Я могу заставить кнопку измениться при запуске действия, используя:

UIImage *changeImage = [UIImage imageNamed:@"stopGrey.png"];
[myButton setImage:changeImage forState:UIControlStateNormal];

После окончания действия я хочу сменить кнопку назад .. Я не могу понять, как это сделать ..

Я пробовал UIControlStateDisabled / Selected / Application. Я вошел в систему, чтобы убедиться, что получен конец действия.

Спасибо за любую помощь ..

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Хорошо, вам нужно сделать это:

.h файл:

-(IBAction)ButtonPressed:(id)sender;
-(IBAction)ButtonReleased:(id)sender;

, если вы используете графическую часть, присоедините событие касания к методу ButtonPressed и касаниевнутри ButtonReleased (щелкните правой кнопкой мыши, чтобы отобразились эти параметры).Если вы используете код для добавления кнопок, используйте метод (в методе viewdidload файла .m):

[button addTarget:self action:@selector(ButtonPressed:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(ButtonReleased:) forControlEvents:UIControlEventTouchUpInside];

Тогда все готово.Метод ButtonPressed будет вызываться каждый раз, когда вы касаетесь кнопки, а метод ButtonReleased будет вызываться каждый раз, когда вы отпускаете кнопку внутри нее.По вашему вопросу вы можете добавить следующий код в методы (файл .m)

-(IBAction)ButtonPressed:(id)sender
{
    [button setBackgroundImage:[UIImage imageNamed:@"ImageWhenPressed.png"] forState:UIControlStateNormal];
}
-(IBAction)ButtonReleased:(id)sender
{
    [button setBackgroundImage:[UIImage imageNamed:@"ImageWhenReleased.png"] forState:UIControlStateNormal];
}

Я также предполагаю, что вы не знаете, как связать кнопку, нарисованную в графическом файле, с указателемв коде.Сначала вы создаете указатель в файле .h:

IBOutlet UIButton *button;

Затем вы переходите к графическому файлу и перетаскиваете правой кнопкой мыши изображение владельца файла (слева имеется оранжевый прозрачный куб в видеизображение) на кнопку.Затем вы выбираете опцию, которая имеет имя указателя.В этом случае кнопка.

И там!все готово!

3 голосов
/ 18 декабря 2011

Просто введите что-то вроде этого в viewDidLoad:

[myButton setImage:[UIImage imageNamed:@"Normal.png"] forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"Selected.png"] forState:UIControlStateSelected];
[myButton setImage:[UIImage imageNamed:@"Highlighted.png"] forState:UIControlStateHighlighted];
[myButton setImage:[UIImage imageNamed:@"Disabled.png"] forState:UIControlStateDisabled];

Тогда сама кнопка будет обрабатывать изменения изображения.Если вы хотите, чтобы кнопка была визуально отключена во время выполнения фоновой задачи, просто установите для параметра «НЕТ» значение «НЕТ», и оно покажет отключенное изображение.

Эти параметры можно проверить с помощью цели touchUpInside, например:

-(void)buttonPushed:(id)sender{
    [myButton setEnabled:NO];

    // Simulate pause before stuff is done
    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [myButton setEnabled:YES];
    });
}
...