我有很多用户抱怨iPhone上的小“i”信息按钮难以触摸。好吧,很简单 - 我只是在它背后贴了一个大胖子隐形按钮,即使用最粗糙的手指触摸也不会错过,当你触摸它时,它会执行infoButtonAction。
事情是,我想将信息按钮本身闪烁约0.25秒,只是为了给出一个视觉“这是正在发生的事情”类型的反馈。我的意思是,我已经假设您打算点击“我”按钮,所以我只是将它视为 DID 点击它。
我试过这个,但它不起作用:
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];
关于如何获得我想要的行为的任何想法?
(我也对有关用户反馈的其他想法持开放态度,但仍然很好奇我将如何做到这一点。想象一下,相反,我有一个“游戏”/恶作剧,你按下“确定”按钮并“取消“闪烁,反之亦然,或同样愚蠢的东西。”
答案 0 :(得分:4)
“i”按钮的大小应为44x44(Apple标准手指大小),可以在Interface Builder中完成。
对于某些动画,我建议调查核心动画。
答案 1 :(得分:1)
问题在于您将按钮标记为需要显示(调用-setNeedsDisplay
是不必要的;按钮在内部调用),但从不允许运行循环有机会显示新图像。
在Cocoa中,您可以使用-performClick:
之类的内容,但iPhone上无法使用。
相反,我建议您尝试在两者之间延迟调用-setSelected:
或-setHighlighted:
。
答案 2 :(得分:0)
我不确切知道您infotap
方法中发生了什么,但似乎没有任何内容会导致您的第一次setImage:
通话和第二次通话之间发生太大延迟。我的猜测是事情发生的速度比眼睛看得快。我建议看NSTimer
试图在那里设置一个特定的延迟。