问题标签 [uigesturerecognizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1721 浏览

iphone - 多个 UIGestureRecognizer 和 UIScrollView 导致冲突

我正在开发一款游戏,您可以将其与拼图游戏进行比较,其中我有几个游戏图块将在表面上相互匹配(后来称为 MainView)。在游戏开始时,图块将放置在 IdleView 中的 MainView 下。我用平移手势移动瓷砖。我使用点击手势选择了一个图块,最后我需要能够旋转我使用旋转手势执行此操作的图块。这导致了一些我设法解决的问题,但是我不得不将图块放在 UIScrollView 中,因为我必须有很多人能够一次显示它们。

我做了几个不同的实现,它们都引起了一些问题。我会尝试不同的方法。

方法 1. 平移、点击 -> 平铺、旋转 -> 主视图

首先,我将点击和平移识别器放在游戏磁贴中,并在我的主视图中放置旋转手势,因为磁贴太小而无法执行旋转手势。然后当我在执行旋转手势时意外按下另一个磁贴时发生冲突然后那个图块将其解释为平移手势。这导致我尝试了一种新方法。

方法 2. 平移、点击、旋转 -> MainView

我的第二种方法是将所有手势识别器放在 MainView 中。然后,每次识别出手势时,我都会通过调用 CGRectContainsPoint([gameTile frame],gesturePoint); 检查是否有用于点击和平移手势的图块;

然后在旋转手势之前,我检查是否选择了图块,然后调用相应的方法。这很好用!但后来我意识到我必须有一些机制来让我有更多的瓷砖然后可以显示在整个屏幕上。所以我添加了一个 UIScrollView,我在其中水平放置了图块,以便可以访问所有图块。我在下面画了一个小图。

然后我将 GameTiles 作为子视图添加到滚动视图中,以便它们随视图滚动。然后他们不再听我的触摸,因为它们不是我的 MainView 的子视图。所以现在我有点陷入僵局,我不再知道该怎么做。如果我回到接近 1 并为 UIScrollView 设置 canCancelContentTouches = NO,我可以移动图块。但随后我将再次遇到旋转手势问题,并且必须进行一些碰撞检测,以便我可以将磁贴从滚动视图移动到主视图。

我已经阅读了很多关于这个问题的不同帖子,但我还无法理解它。

谁能给我一些关于另一种方式的指示,然后是 UIScrollView,它允许我拥有 50 个不会干扰我的触摸的图块,并且仍然允许它们具有合理的大小,以便我可以在它们上使用手势识别器。或者如何将 tile 从 UIScrollView 平滑地移动到 MainView 并且仍然能够在不平移其他 tile 的情况下旋转 tile。

0 投票
2 回答
294 浏览

ios - 将 TapRecognizer 和不同的颜色添加到 Xcode 中的字符串中的单词

我正在从 plist 中提取文本并将其绘制到 UIView 中。文本包含我想要突出显示并启用用户交互的术语,因此我可以弹出一个带有 teem 解释的字典视图。

我知道如何在字符串上找到它们的位置,而且效果很好。但我没有找到如何让它们以不同的颜色出现。对我来说更重要的是——如何为它们添加点击识别器。

我将不胜感激任何帮助。

谢谢沙妮

0 投票
3 回答
10617 浏览

iphone - 如何获取我正在点击的 UIImageView 的标签?

我有几个 UIImageView,每个都有一个标签;我有一个图像数组,我想做的是:当用户点击其中一个 UIImageView 时,应用程序会从数组中返回某个图像。

我这样实现:

我想找出imageView.tag, 并传递imageView.tag

显示图像。

我确实标记了所有这些,问题是我如何找出tag我正在点击的 imageView ?谢谢阅读^_^

0 投票
1 回答
490 浏览

ipad - 从 UIBarButtonItem 显示具有不同点击计数的不同视图(包装 UISegmentedControl)

我已经阅读了有关 UITouch 和 UIGestureRecognizer 的信息,但我仍然很困惑它们之间的区别。我有一个案例。在我的应用程序中,我有一个 barbuttonitem,我想在点击该按钮时显示不同的视图。如果我执行单点操作,我想显示一个文本视图,但是当我再次执行单点操作时,我想显示该按钮的弹出窗口。有没有人可以给我一个示例代码来做它并解释一下 UITouch 和 UIGestureRecognizer 之间的区别是什么???

更新

barbuttonitem 是 UISegmentedControl 的包装,这是来自 desain 的图片 替代文字

我试图使用 touchesBegan:withEvent: 和 touchesEnded:withEvent: 来解决这个问题,但我不知道如何将它连接到那个 barbuttonitem。这是我制作的代码:

}

}

}

}

}

我的理解有什么错误吗?

0 投票
6 回答
21948 浏览

objective-c - 获取 UIGestureRecognizer 的 UITouch 对象

有没有办法获取UITouch与手势关联的对象?UIGestureRecognizer似乎没有任何方法。

0 投票
3 回答
27414 浏览

uitableview - 手势识别器和 TableView

我有一个涵盖所有 UITableView 的 UIView。UIView 使用手势识别器来控制表格显示的内容。我仍然需要垂直 UITableView 滚动和行点击。我如何将这些从手势识别器传递到桌子上?

0 投票
1 回答
6188 浏览

ios - 如果用户在负方向平移 x 和 y,UIPanGestureRecognizer 不会切换到状态“结束”或“取消”

UIPanGestureRecognizer 有点问题。如果用户平移到左上角,识别器不会报告 UIGestureRecognizerStateEnded 状态(表示负 x 和 y 方向)

如果用户抬起手指时任何方向为正,则状态将更改为 UIGestureRecognizerStateEnded,但如果两个方向均为负或为零,它就会停止报告操作。

这很糟糕,因为只要用户拖动某些东西并且这些视图在失败情况下不会返回,我就会隐藏一些覆盖视图。

当然,我可以设置一个 NSTimer 以在一段时间后再次自动显示覆盖,但我的代码中看不到明显的错误,我希望它干净。

有什么我想念的吗?它是苹果的错误吗?

初始化是这样的:

处理函数如下所示:

0 投票
2 回答
3492 浏览

iphone - iPhone SDK 中鼠标向下和向上的手势识别器

我想使用手势识别器同时捕捉鼠标向下和鼠标向上。但是,当鼠标向下被捕获时,鼠标向上永远不会被捕获。

这是我所做的:

首先创建一个自定义 MouseGestureRecognizer:

然后将识别器绑定到视图控制器中的视图:

当我在视图中单击鼠标时,将调用 touchesBegan,但从不调用 touchesEnded。是因为 UIGestureRecognizerStateRecognized 吗?

0 投票
2 回答
4445 浏览

iphone - 整个 UIView 的手势识别器

我想找到一种方法来为整个 UIView 设置动画,其中包含一些 ui 组件。这是我的代码片段:

“一块”是一个uiview,我想旋转它,它工作得很好。但是当我在其中添加一些其他 UI 组件(如 UIbutton)(片段视图)时,当用户触摸这些 UI 组件时,手势无法正确识别。本质上,我希望父母即使在用户触摸子对象时也能听到手势。

有任何想法吗?

0 投票
1 回答
8816 浏览

iphone - 无法使用 UIPanGestureRecognizer 移动 UIImageView

我正在尝试创建一个程序,用户可以使用 UIPanGestureRecognizer 在屏幕上拖动 UIImageView。我尝试了几种不同的方法,但无法弄清楚。我不确定是否需要创建发送者/请求者。我的理解是UIImageView需要放在一个可以处理手势的UIView中。在我的程序中,我有一个视图控制器 - AdvancedViewController1。我创建了一个名为 AdvancedView1 的 UIView。在界面生成器中,我已将 AdvancedView1 插入 AdvancedViewController 1。以下是控制器.h.m视图的文件。我只包含了相关代码。如果我很接近,请告诉我,以及如何修复我的代码。在此先感谢您的帮助。

在 IB 中,我已将 IBOutlet 链接到 AdvancedView1 到 UIView,将 option1 链接到我希望能够移动的 UIImageView。