Программировать событие щелчка кнопки "огонь"?

Есть ли способ программно запустить событие нажатия кнопки? У меня есть кнопка, размещенная там в UIView, и в конкретном сценарии я хочу нажать кнопку с помощью кода, а не вручную в качестве пользователя. Возможно ли это в разработке iOS? Пожалуйста, предоставьте свои предложения и объясните, как это сделать.

Спасибо.

Ответ 1

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

[button sendActionsForControlEvents:UIControlEventTouchUpInside];

Ответ 2

У меня была такая же проблема, как и выше. Я бы опубликовал комментарий, но моя репутация недостаточно высока. Итак, я напишу полный ответ:

[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];

Это программно ударит по кнопке и выделит ее для кажущегося нормального количества времени. Предложение Ричи не срабатывало, поскольку кнопка была подсвечена (если вообще) на незаметное время.

Ответ 3

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

-(void)myMethod
{
   // do stuff
}

-(IBAction)myButtonClick:(id)sender
{
    [self myMethod];
}

-(void)clickMyButton
{
    [self myMethod];
    // OR
    [self myButtonClick:nil];
}

Ответ 4

Если вы говорите об UIButton, вы можете просто вызвать тот же метод, который UIButton вызывает при его прослушивании. Например:

[self myButtonsTargetMethod];

Ответ 5

Да,

[_button setHighlighted:YES];
[_button sendActionsForControlEvents:UIControlEventTouchUpInside];
[_button setHighlighted:NO];

Но проблема здесь в том, что вы не сможете увидеть это событие, потому что оно слишком быстро. так что вы можете сделать, попробуйте приведенный выше код с помощью NSTimer.

NSTimer *quick = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(MeFirst:) userInfo:nil repeats:NO];

MeFirst - это метод, который я создал.