问题标签 [touches]

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 投票
2 回答
509 浏览

iphone - 子视图在所有窗口上进行触摸事件

我的观点有一点问题。

我有一个uiviewControler,加载一个xib。在这个视图上我有一个 UIButton (触摸它工作正常)

我添加了一个由代码创建的子视图(在不同的类上),这个视图响应她的触摸事件。

当我在视图上添加此子视图时,此视图上的事件正常,但我的第一个 uiview 上的 UIButton 不起作用。

我犯了错误?

编辑 :

我做了一些测试。我的 uiview 并不是真正单独加载。事实上,我加载了一个新的 uiviewController,并将它的子视图添加到我当前的 uiviewController。

我的问题是由于我的新 uiviewController 的透明性拦截了我的触摸事件。

0 投票
1 回答
366 浏览

iphone - iPhone + OpenGL + Touches:FPS 下降

最近我遇到了一个很奇怪的问题:触摸 iPhone 的屏幕并四处移动手指可以消耗我 50% 的 FPS。是的,我检查了我的代码是否存在瓶颈——不是问题所在。在写这篇文章之前我尝试的最后一个方法——注释掉所有的触摸处理代码,然后查看 FPS。结果是:没有接触 - 58-60。触摸和移动手指 – 35-40 FPS 瞬间。

渲染是在一个单独的线程中完成的,因此主运行循环事件不会与它发生冲突。但是,对我(以及我开发的游戏)来说,解决这个问题非常困难,因为这种 FPS 下降非常明显。

提前谢谢你的帮助。

更新:似乎将渲染线程的优先级设置为更高的值有点帮助......

0 投票
2 回答
1415 浏览

objective-c - UIImageView 子类没有将触摸传递给控制器​​子视图

当我UIImageView在几个UIButton子类实例后面添加一个子类(全屏)时,这些按钮停止接收触摸并且不再起作用。我尝试过的任何方法都无法恢复它们与用户触摸的连接。

我已经尝试过:
a)使用UIImageView前视图的子类(接收触摸)并确保setUserInteractionEnabled是。结果:UIButtons存在时没有响应UIView

b) 明确地将触摸从前视图传递给视图控制器,希望它会做正确的事情。结果:UIButtons对触摸没有反应。

c)当收到正面的任何触摸时,直接在我想与之交互的按钮上调用touchesBegan,touchesMoved和方法。结果:引人注目的是,即使我将触摸事件塞进它们的喉咙,按钮也没有响应。touchesEndedUIView

d) 将触摸从前视图传递到UIViewController,并遍历所有子视图手动分发触摸。我提供了一个touchesBegan方法来展示我是如何尝试做到这一点的。执行时循环是无限的,它永远不会超过第一个视图(类型为FrameUIView)。

我知道这个问题很可能是我对正确的视图层次结构或响应者链缺乏了解的结果。

如果我评论按钮后创建的最后一个视图,则按钮可以正常工作。在这方面有什么特别之处UIButtons吗?

这是代码。

我有一个 UIViewController 子类,其中:

任何知道如何做到这一点的人都会赢得互联网和 cookie。还接受俄罗斯轮盘赌混乱的左轮手枪。谢谢你。

0 投票
2 回答
661 浏览

uiwebview - iphone sdk中UIWebview中的注释

我需要帮助,在网页上涂鸦,即用户在 uiwebview 上移动的任何地方都应该根据触摸移动画一条线。

这可能吗。

任何人都可以在这方面帮助我。

谢谢,姆鲁杜拉。

0 投票
1 回答
343 浏览

objective-c - 处理触摸

我有一个带有几个子视图的 UIView 子类,我想在类中处理这些事件:

  • touchesBegan:withEvent:
  • touchesMoved:withEvent:
  • touchesEnded:withEvent:

但我也希望在子视图中调用这些事件。我怎样才能做到这一点?

(我已经尝试过使用 hitTest,但我只得到了 touchesBegan 事件,并且没有使用该方法发送任何触摸)

0 投票
2 回答
2293 浏览

ios - iPhone:触及 UIViewController

我有一个 UIViewController,在上面我放了一个 UIImageView,然后是一个 UIScrollView。

我可以很好地处理 UIScrollView 上的触摸,但是我想处理 UIViewController 上的某些触摸。

我只需要触摸保持 5 秒的 UIScrollView(这部分工作正常)。任何小于我想要传递给 UIViewController 的东西。

在 UISCrollView 我称之为:

有没有办法将触摸从 UIScrollView 传递到底部 UIViewController,或者我是否必须将对 UIViewController 的引用传递到 UIScrollView?

0 投票
1 回答
24498 浏览

ios - 关于如何将项目从 UITableView 拖放到 UITableView 的教程

我已经在这个问题上敲了一段时间,我想通了。我想回馈社区,因为我从这个网站得到了很多帮助:)。

我正在尝试将一个项目从一个 UITableView 复制到另一个 UITableView,而我在网上看到的有关如何执行此操作的信息充其量只是粗略。我自己想通了,所以我将描述我的小架构。

  • 掌握 UIView
    • UIView 与 UITableView
      • 自定义 UITableViewCell
        • 被复制的自定义 UIView(在我的例子中是 Person 对象)
    • UIView 与 UITableView
      • 自定义 UITableViewCell
        • 被复制的自定义 UIView(在我的例子中是 Person 对象)

我在 UITableView 中拥有的 person 对象是我想要从一个表拖放到另一个表中的对象。我最难弄清楚如何将项目从桌子上弹出并以一个平滑的动作将其拖过来。在最长的时间里,我需要两次触摸才能执行操作。

从 Person 对象开始,这是一个包含图像的简单对象。当拖动发生时,我必须实现自己的 touchesMoved 方法来更改 Person 的中心位置。

我在初始化时将 Person 对象的 userInteractionEnabled 标志设置为 NO,这样表中的任何点击都不会被 Person 对象捕获。在这种情况下,Person 对象将在表中移动,这违背了目的。

下一个对象是我的自定义 UITableViewCell。这个对象负责捕捉用户的第一次触摸。它应该做的是抓住这种触摸并“弹出”Person。Person 是属于自定义 UITableViewCell 的子视图之一。

重要的是要注意 userInteractionEnabled 标志在上述方法中被翻转。在触摸之前,Person 对象对人的触摸是“禁区”。在自定义单元格捕捉到移动后,通过将 Person 添加到父视图然后激活(userInteractionEnabled=YES)来释放 Person。Person 对象然后“出生”并且可以自己处理移动触摸。

这有一个小故障,即 Person 对象在左上角闪烁,然后立即下降到用户的手指上。

这个设计的最后一部分是主 UIView 需要处理“触摸转换”。当用户触摸表格并且 Person 对象被弹出时,应用程序需要意识到需要从表格中移除焦点并指向 Person 对象。这样做的方式是主 UIView 中的 hitTest 方法被以下内容重载。

这段代码的工作方式是,当 Person 从表中弹出时,它并没有关注它。触摸由从中弹出 Person 的 UITableView “拥有”。hitTest 方法是重新聚焦该触摸的关键。系统会定期检查哪个 UIView 是触摸的焦点。系统调用 hitTest 方法来识别该 UIView。当 Person 附加到主视图时,此 hitTest 函数遍历所有子视图并检测 Person 的存在并将其作为“主导”触摸对象返回。您手指的任何移动都会立即报告给 Person 而不是 UITableView。

这是实施的胆量。现在让 UITableView “捕捉”移动对象很简单,我会留给你尝试!如果您有任何问题,请发布!

编辑#1 删除 Person 对象比我想象的要难:)。我必须添加一行以防止 UITableView 在父级移动时滚动,因为 UITableView 正在吸收所有移动事件。
touchesEnded 函数在自定义 UITableViewCell 类中触发。

0 投票
1 回答
697 浏览

iphone - 将 beginTouches 和 endTouches 转换为 ccBeginTouch 和 ccEndTouch

我正在将我正在开发的游戏从 UIkit 转换为 coocos2d。使用 UIKIT,我将使用下面的代码将触摸事件传递给方法。Cocos2d 中的等价物是什么?

使用 cocos2d 的等价物是什么?

我试图自己解决这个问题,我在谷歌上花了几个小时,但我还没有想出一个可行的解决方案。

0 投票
1 回答
261 浏览

iphone - iPhone 4:Touches 在模拟器上有效,但在设备上无效

我正在开发一个通用应用程序,我实际测试过:

  • iPad:模拟器正常 - 设备正常
  • iPhone 3G:模拟器正常 - 设备正常
  • iPhone 3GS:模拟器正常 - 设备正常
  • iPhone 4:模拟器正常 -设备不工作

应用程序不响应任何触摸输入,我尝试在 touchBegun、touchMoves、touchEnded 中设置一些断点,它们从未被调用...任何想法?

0 投票
3 回答
300 浏览

iphone - 当用户在屏幕上有两根手指并抬起一根时,我不想发生任何事情

适可而止。

就像标题说的那样,我有点苦恼。

所以这是我的问题的概要。我有这艘船的权利。它位于屏幕的中心底部 (240,0)。当用户在大于 240 的点向右触摸时,船向右移动。如果用户在小于 240 的点上触摸,则离开。但是,当一次只有一根手指在屏幕上时,这很好。如果用户向右触摸,没有抬起手指,然后向左触摸(哦,废话,屏幕上有两个手指),我需要它到哪里,船一直向右移动,直到他们抬起右手,然后突然船向左移动第二次触摸。

我正在使用计时器从当前 x 坐标中添加/减去一个数字以使其移动。

简而言之,这就是我所拥有的:(不要笑或讨厌我是菜鸟)

如果有帮助,我正在尝试完全复制游戏“Radiant”的控件。如果你能帮忙,我会永远爱你。

澄清一下,我希望这种情况发生:

  1. 用户触摸屏幕右侧
  2. 船向右移动
  3. 用户用第二根手指触摸屏幕左侧
  4. 由于用户没有抬起他们的第一次触摸,所以船仍在向右移动,然后用户抬起了第一次触摸
  5. 然后船立即改变航向向左移动到第二次触摸

现在我启用了多点触控,所以现在它的工作原理是这样的:

  1. 用户触摸屏幕右侧
  2. 船向右移动
  3. 用户用第二根手指触摸屏幕左侧
  4. 船向左移动,然后用户抬起第一次触摸
  5. 即使用户没有抬起第二次触摸,船也会停止在其轨道上