Цель UIButton запускается перед анимацией - PullRequest
1 голос
/ 13 сентября 2011

Я запрограммировал Викторину в XCode, где я создал кнопки UIB, программно отображающие ответ на вопрос. Когда пользователь нажимает кнопку, загружается следующий вопрос и положение кнопок, которое я перетасовал, чтобы не дать правильный ответ в одном и том же месте для каждого вопроса (однако правильный ответ находится под одной и той же кнопкой UIB для каждого вопроса.)

Вот как я создаю свои кнопки:

if (self.buttonRightAnswer == nil)
{
    self.buttonRightAnswer = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [self.buttonRightAnswer addTarget:self action:@selector(rightAnswer) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:self.buttonRightAnswer];
}

self.buttonRightAnswer.frame = CGRectMake(20.0, [[randomPositionArray objectAtIndex:0] floatValue], 280.0, 40.0);
[self.buttonRightAnswer setTitle:[[self.quiz.arrayWithQuestions objectAtIndex:questionNr - 1]valueForKey:@"RightAnswer"] forState:UIControlStateNormal];

Когда пользователь нажимает вправо ответ, загружается следующий вопрос. Здесь это проблема. Следующий вопрос загружается тем же методом только перетасованными позициями, и анимация нажатия кнопки рисуется после перемещения кнопок, в результате чего пользователь видит, где находится правильный ответ.

Как я могу дождаться анимации, прежде чем перемещать кнопки?

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

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Обычно при использовании кнопки UIB события запускаются на UIControlEventTouchUpInside или в конце касания.

Вы запускаете его при касании, что вызывает проблемы с анимацией, которую вы хотитеслучиться.

Возможно, вам будет проще перейти на использование UIControlEventTouchUpInside вместо UIControlEventTouchDown, поскольку это должно решить вашу проблему и быть более совместимым с другими приложениями для iPhone.

0 голосов
/ 13 сентября 2011
  1. Вы можете использовать какой-нибудь дерьмовый код и вставить какой-то «сон» перед очередными кнопками перетасовки.
  2. Перед тем, как создавать кнопки снова (после ответа на вопрос), выможно добавить что-то вроде (если вы используете разные изображения для состояний кнопок)

    - (void) waitUntilButtonDeselected {bool selected = YES;while (selected) {bool selected = (self.buttonRightAnswer.currentBackgroundImage == UIImageOfNotSelectedButton);}}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...