Cocoa touch 如何以编程方式突出显示UIButton?

Cocoa touch 如何以编程方式突出显示UIButton?,cocoa-touch,Cocoa Touch,我有很多用户抱怨iPhone上的“I”信息按钮很难触摸。好的,很简单——我只是在它后面贴了一个巨大的隐形按钮,即使你用手指轻触它,也不会错过。当你触摸它时,它会显示信息按钮 问题是,我想让info按钮本身闪烁大约.25秒,只是为了给出一个视觉上的“这就是正在发生的事情”类型的反馈。我的意思是,我已经假设你是想按“我”键,所以我只是把它当作你真的按了 我试过这个,但不起作用: UIImage* normalImage = [_infoButton imageForState:UIContr

我有很多用户抱怨iPhone上的“I”信息按钮很难触摸。好的,很简单——我只是在它后面贴了一个巨大的隐形按钮,即使你用手指轻触它,也不会错过。当你触摸它时,它会显示信息按钮

问题是,我想让info按钮本身闪烁大约.25秒,只是为了给出一个视觉上的“这就是正在发生的事情”类型的反馈。我的意思是,我已经假设你是想按“我”键,所以我只是把它当作你真的按了

我试过这个,但不起作用:

    UIImage* normalImage = [_infoButton imageForState:UIControlStateNormal];
    UIImage* highlighted = [_infoButton imageForState:UIControlStateHighlighted];
    _infoButton.highlighted = YES;                                          // flash the button
    [_infoButton setImage:highlighted forState:UIControlStateNormal];
    [_infoButton setNeedsDisplay];                                          //* FIXME: No flash?!

    [(AppDelegate*)[[UIApplication sharedApplication] delegate] infoTap];   // do the info action

    _infoButton.highlighted = NO;   
    [_infoButton setImage:normalImage forState:UIControlStateNormal];
    [_infoButton setNeedsDisplay];
关于如何获得我想要的行为有什么想法吗


(我也愿意接受关于用户反馈的其他想法,但仍然好奇我会怎么做。想象一下,相反,我有一个“游戏”/“恶作剧”,你按下“确定”按钮,然后“取消”闪烁,反之亦然,或者做一些同样愚蠢的事情。)

我不知道你的
infotap
方法到底发生了什么,但是在您的第一次
setImage:
调用和第二次调用之间,似乎没有任何东西会造成很大的延迟。我的猜测是事情发生的速度比眼睛所能看到的要快。我建议查看
NSTimer
,尝试在那里设置一个特定的延迟。

问题是,您正在将按钮标记为需要显示(调用
-setNeedsDisplay
是不必要的;按钮在内部调用),但决不允许运行循环有机会显示新图像

在Cocoa中,您可以使用类似于
-performClick:
的功能,但iPhone上没有这种功能

相反,我建议您尝试调用
-setSelected:
-setHighlighted:
,中间有一个延迟。

可以在Interface Builder中将“I”按钮的大小设置为44x44(苹果标准手指大小)


对于一些动画,我建议研究核心动画。

啊!我没有意识到新的infobutton并没有像44x44那样“开箱即用”(通过编程创建)。重点;谢谢它真的可以在IB中调整大小吗?宽度和高度选项对我来说是灰色的。我想当我写这篇文章(问题被提出)时,必须在代码中创建“I”按钮。现在按钮在IB中可用。好的,44x44解决了我的元问题,但这是我问的“主要”问题的答案。谢谢