UIButton的目标在动画之前被触发

时间:2011-09-12 21:02:04

标签: objective-c xcode uibutton

我在Xcode中编写了一个测验,我以编程方式创建了UIButtons,显示问题的答案。当用户点击按钮时,下一个问题被加载并且我拖曳的按钮位置不能在每个问题的相同位置做出正确答案(但是对于每个问题,正确答案都在相同的UIButton下。)

这是我创建按钮的方式:

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 :(得分:0)

  1. 您可以使用一些狗屎码并在下一个随机播放按钮之前插入某种“睡眠”
  2. 在创建按钮之前(在回答问题之后),您可以添加类似的内容(如果您为按钮状态使用不同的图像)

    - (无效)waitUntilButtonDeselected { bool selected = YES; 而(选中) {   bool selected =(self.buttonRightAnswer.currentBackgroundImage == UIImageOfNotSelectedButton); } }

  3. 这里的想法是检查按钮的图像是否对应于未选择的按钮。

答案 1 :(得分:0)

通常在使用UIButton时,会在UIControlEventTouchUpInside或触摸结束时触发事件。

你在触地时触发它会导致你想要发生的动画出现问题。

您可能更容易切换到使用UIControlEventTouchUpInside而不是UIControlEventTouchDown,因为这可以解决您的问题并与其他iPhone应用更加一致。