3

我正在开发一个 iPad 应用程序,用户可以在其中在画布上放置几个可编辑的文本框。每个文本框都应该可以通过用一根手指拖动来移动。用户可以使用两根手指旋转选定的文本框。

我想有两层。上层将接收两根手指的旋转手势。但是,如果用户只用一根手指触摸屏幕,它应该将触摸事件传递给下层的文本框(自定义 UIView)。是否有可能做到这一点?

我的第一次尝试是计算来自-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event使用的触摸次数[touches count]。如果触摸次数为两次,则执行旋转。如果是单次触摸,它将“循环”遍历所有文本框并检查触摸是否在哪个文本框内,然后对该框执行移动。

有一个更好的方法吗?当有很多文本框时,循环是否会成为问题?

顺便说一句,我是堆栈溢出的新手。请告诉我我的问题是否过于模糊或任何问题,我会尝试更清楚地解释它。

谢谢你的帮助。

4

1 回答 1

0

您可以使用 aUIRotationGestureRecognizer进行旋转和 aUIPanGestureRecognizer with maxNumberOfTouches = 1进行拖动。

UIGesturesRecognizers 比简单的触摸 API 更容易处理:手势识别主要是一个状态机问题(触摸在哪里,之前在哪里,它仍然有效,到目前为止我有什么样的手势特征)。通过方法等处理几个手势-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event,可能很快就会变成地狱!

于 2013-02-06T14:22:27.050 回答