我正在制作iPhone卡片游戏,每次使用都有一副纸牌,我想让用户可以选择将手指拖过卡片,每张卡片在他的手指放在上面时都会突出显示。此效果已在Uno for iPhone中完成。我的卡片被放入UIButton,我试图做的是在正常状态下将一个小图像设置为按钮,在突出显示状态下设置一个更大的图像,它确实达到了我想要的效果但是,用户必须突出显示每个卡可以单独看到更大的图片。
以下是我用来设置UIButton的正常和突出显示状态的代码:
//player413 is an IBOutlet to a UIButton, and img,imgHigh are UIImages
[player413 setImage:img forState:UIControlStateNormal] ;
[player413 setImage:imgHigh forState:UIControlStateHighlighted] ;
任何指导方针?
答案 0 :(得分:0)
使用单个视图处理所有触摸交互。
编辑:哦,好的。
当视图接收到触摸hitTest:withEvent:
时,会递归调用,直到找到“接受”触摸的视图。
一旦hitTest:withEvent:
返回非零值,它就结束了(默认情况下);该视图“拥有”触摸(请参阅UITouch.view)。只有那个视图得到touchesBegan / Moved / Ended / Cancelled:withEvent:callbacks。
如果您希望触摸影响卡片中的任何卡片,则卡片组应实现触摸*:withEvent :,并在子视图上设置userInteractionEnabled = NO,或覆盖hitTest:withEvent:因此它返回“self”而不是一个“卡片”。
然后,在触摸*:withEvent:中,检测触摸所在的“卡”,然后执行card.highlighted = YES
。如果你有multipleTouchEnabled = NO,你可以假设只有一次触摸并使用UITouch * touch = [touches anyObject]
。
(有一些UIKit类以某种方式位于触摸和它自己的视图之间:UIScrollView可以截取触摸并滚动;手势识别器在检测到gesure时取消触摸。)