UIButton执行三个动作?

时间:2013-07-22 18:11:21

标签: ios uibutton

在我的应用程序中,我有一个向上和向下按钮。如果你愿意,我的应用程序就像一个Game Boy,我有一个UIImageView,其中包含一个箭头,每按一次按钮就移动到一个CGPoint。

我有三个用户可以选择的选项,但我只能将我的向下按钮编程为一次,而不是选择下至第三个选项。我的向上按钮也一样。

我的问题是:
如何点击我的向下按钮一次下降,然后再次下降,然后上升然后再上升? 令人困惑,我知道,但我是一个年轻的开发人员。谢谢!

我向上移动箭头的代码:

[arrow setCenter:CGPointMake(204, 93)];

我向下移动箭头的代码:

[arrow setCenter:CGPointMake(176, 140)];

2 个答案:

答案 0 :(得分:1)

以下是有关如何解决问题的一些提示。尝试将选项选项与显示代码分开。 跟踪选择选项,而不是箭头的位置。

假设你的选项是0,1,2。在你的界面中:

@property (nonatomic, assign) NSUInteger option;

init或其他地方:

self.option = 0; // or whatever the default option is

按下向上按钮:

self.option = self.option++;

按下向下按钮:

self.option = self.option--;

接下来,在进行递增或递减之前,检查您是否未递减超过0(最低选项)或递增超过2(最高选项)。

设置选项值后,根据选项适当放置箭头。将下面的Y值更改为标签的Y中心。

static const CGFloat optionYs[3] = { 10.0, 20.0, 30.0 };

CGFloat y = optionYs[self.option];
[arrow setCenter:CGPointMake(x, y)];

希望这能让你走上正轨!

答案 1 :(得分:0)

您可以尝试使用箭头的属性从当前位置向上和向下移动一小部分,而不是硬编码按下按钮时要转到的位置。

起来:

[arrow setCenter:CGPointMake(arrow.center.x, arrow.center.y - 10.0)];

向下:

[arrow setCenter:CGPointMake(arrow.center.x, arrow.center.y + 10.0)];

修改
如果您希望箭头有三个不同的y值,则需要在设置新箭头之前检查y的当前值。所以,假设您希望箭头转到10.0,20.0或30.0。如果是30.0然后按下,则需要将其更改为20.0。如果它是20.0,您希望它更改为10.0。如果它是10.0,你希望它环绕并返回到30.0。这样的事情应该有效:

if([arrow.center.y == 30.0)
{
    [arrow setCenter:CGPointMake(arrow.center.x, 20.0)];
}
else if(arrow.center.y == 20.0)
{
    [arrow setCenter:CGPointMake(arrow.center.x, 10.0)];
}
else
{
    [arrow setCenter:CGPointMake(arrow.center.x, 30.0)];
}

Down类似。