【发布时间】:2010-12-13 16:28:41
【问题描述】:
我正在构建一个 iOS 棋盘游戏(类似于拼字游戏或文字游戏),其中涉及在屏幕上的小图块周围移动,我发现用户有时很难触摸和移动图块,因为它们太小的。由于游戏的设计,我无法增加图块的大小,所以我不得不实施一些小技巧,让用户更容易触摸和移动图块,而且效果很好。剩下的唯一问题是用户有时只触及磁贴之外,当用户尝试移动它时,磁贴会停留在原处。
对于如何解决这个问题,我有两个想法...
- 如果用户触摸屏幕时没有触摸磁贴,我可以使用父视图的触摸位置来查找离触摸位置最近的磁贴,并以某种方式将触摸事件转发到该磁贴的视图。
- 如果在用户触摸屏幕时没有触摸磁贴,我可以在用户尝试移动时将手指拖过磁贴时以某种方式“捕捉”该磁贴。
我更喜欢实施解决方案 #2,因为解决方案 #1 有太多相关的问题,更不用说解决方案 #2 是更现实的体验。也就是说,当用户将手指拖到磁贴上并发送触摸事件以将其移动到手指所在的位置时,我如何“捕捉”磁贴?
目前,我的图块被实现为 UIView 的子类,它们直接处理触摸事件(touchesBegain、touchesMoved 和 touchesEnded)。因此,如果用户刚刚触摸到视图之外并将手指拖到视图上,它不会收到任何触摸事件,因为它没有收到初始的 touchesBegan 事件。
提前感谢您的智慧!
【问题讨论】: