Ответ 1
Похоже, что ответ Ken, но более гибкий, поскольку он будет отслеживать действительные действия кнопок, если вы измените их или добавите более одного.
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
Есть ли способ программно запустить событие нажатия кнопки? У меня есть кнопка, размещенная там в UIView, и в конкретном сценарии я хочу нажать кнопку с помощью кода, а не вручную в качестве пользователя. Возможно ли это в разработке iOS? Пожалуйста, предоставьте свои предложения и объясните, как это сделать.
Спасибо.
Похоже, что ответ Ken, но более гибкий, поскольку он будет отслеживать действительные действия кнопок, если вы измените их или добавите более одного.
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
У меня была такая же проблема, как и выше. Я бы опубликовал комментарий, но моя репутация недостаточно высока. Итак, я напишу полный ответ:
[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];
Это программно ударит по кнопке и выделит ее для кажущегося нормального количества времени. Предложение Ричи не срабатывало, поскольку кнопка была подсвечена (если вообще) на незаметное время.
Почему бы просто не выполнить код, который выполняется, когда пользователь нажимает кнопку?
-(void)myMethod
{
// do stuff
}
-(IBAction)myButtonClick:(id)sender
{
[self myMethod];
}
-(void)clickMyButton
{
[self myMethod];
// OR
[self myButtonClick:nil];
}
Если вы говорите об UIButton, вы можете просто вызвать тот же метод, который UIButton вызывает при его прослушивании. Например:
[self myButtonsTargetMethod];
Да,
[_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 - это метод, который я создал.