0

有没有办法给 UIGestureRecognizer 一个形状(一系列坐标),当用户用手指绘制形状时,它可以用来触发动作?我在考虑字母的形状,但它可以是任何东西。

编辑:

我发现这个https://github.com/chrismiles/CMUnistrokeGestureRecognizer可能会做我想要的。

4

1 回答 1

2

不幸的是,实现自定义手势识别器并不像提供UIGestureRecognizer一个形状或一系列点那么简单。您必须子类UIGestureRecognizer化并编写代码来跟踪用户的交互touchesBegan:withEvent:touchesMoved:withEvent:。然后,根据用户绘制的手势的线条长度和角度等,您确定它是否成功匹配您的预期并触发UIGestureRecognizer回调。

这导致了固有的复杂性,因为用户在用手指弯曲手势时不是很精确。您必须在设计手势时对所识别的内容有所容忍;太严格会没用,太笼统会报太多误报。

我怀疑如果您尝试识别大量手势,例如字母表中的字母,而不是实现 26 种不同的手势识别器,您最好编写一个通用的手势识别器,记录一次用户的输入并检查它是否匹配您存储在某处的一系列手势定义。然后实现一个自定义回调,告诉处理程序它匹配哪个手势。

来自 Apress的非常有声望的“开始 iOS 开发:探索 iOS SDK ”系列专门用一章的一小部分来实现自定义手势识别器。随附的源代码可在此处从 Apress 官方网站下载(底部的源代码/下载选项卡)。
请参阅第 17 章中的第 627-632 页:“点击、触摸和手势”。

Apple 的iOS 事件处理指南手势识别器章节包含“创建自定义手势识别器”部分,其中也包含相关信息和示例。

于 2013-03-28T17:06:45.537 回答