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