Есть ли способ программно «нажать» UIControls, такие как кнопки сегментов? - PullRequest
1 голос
/ 13 января 2012

Я надеюсь, что ответ на мой вопрос может быть полезен многим разработчикам, и боюсь, что это действительно глупый вопрос: у меня есть процедура, которая графически и программно перемешивает карты 5 различными способами (в том числе срезкой и раздачей). Это реализовано из UISegmentControl, заменив 5-кнопочное модальное оповещение. Все это работает очень хорошо, но вот проблема: когда настала очередь компьютера разбираться, я построил цикл for внутри цикла for, чтобы случайным образом инициировать вызовы, генерируемые случайными числами, в случайные графические процедуры <10. Все вызовов, кажется, выполняется для всех наборов циклов for, прежде чем на экране появится какая-либо графика. Затем я вижу карты, лежащие лицом вниз и вверх, по всему экрану. Психоделический, верно? Кажется, что моя логика цикла управления выполняется без блокировки, ожидания или сериализации графики. Помните, что графика отлично работает, когда пользователь нажимает один сегмент за раз. Я подумывал о реализации UITouchEvent для программной симуляции нажатия кнопок, но я не нашел ни одного примера. Можно ли программно «постучать» по сегменту «кнопки»? </p>

1 Ответ

6 голосов
/ 13 января 2012

вы можете сделать что-то вроде:

- (void)simulateButtonPressed {
    [button sendActionsForControlEvents:UIControlEventTouchDown];
    button.highlighted = YES;
    [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(simulateButtonTimeElapsed:) userInfo:nil repeats:NO];
}

- (void)simulateButtonTimeElapsed:(NSTimer *)timer {
    button.highlighted = NO;
    [button sendActionsForControlEvents:UIControlEventTouchUpInside];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...