- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在为 iOS 开发一个简单的游戏,其中涉及拖动和使用旋转以及其他手势识别器。拖动是通过 touchesBegan/Moved/Ended
和旋转实现的 - 通过识别器。
View 的形状不规则, View 边界有时会重叠,所以我实现了 Ole Belgeman 的 UIImage+ColorAtPixel在我的图片 View 中,并覆盖主元素 View 中的isPointInside
方法。 isPointInside 调用图片 View 中的方法,该方法检查触摸点的 alpha,如果透明部分已被触摸,则返回 NO。本质上,hitTest
会忽略此分支。
但它的副作用是 hitTest 会忽略透明部分上的所有触摸,而旋转识别器仅适用于非透明区域。对于一些尺寸太小的 View ,无法使用旋转手势:(
有没有办法以某种方式避免这个问题并为touchesBegan
仅使用hitTest
逻辑?我试图找出解决方案,但似乎 hitTest 在任何触摸处理之前都严格工作。
在 touchesBegan
检查透明度是可行的,但是当您触摸与另一个 View 的非透明部分重叠的透明部分时,后者不会接收到触摸。
我只是想不出这个窍门...
提前感谢您的帮助!
最佳答案
我会让拖动使用 UIPanGestureRecognizer , 这样你就可以实现委托(delegate)方法 -gestureRecognizer:shouldReceiveTouch:当您的平移识别器正在考虑透明区域中的触摸时返回 NO
。保留它未实现或从您的旋转识别器返回 YES
以接收所有内容。
此外,对这两种 Action 使用手势识别器还有其他好处,比如能够使用 -requireGestureRecognizerToFail: 指定依赖项| .
关于objective-c - 仅对 touchesBegan 而非手势识别器使用 hitTest 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880109/
我正在编写一个 ipad 应用程序,您可以用 1 或 2 个手指在屏幕上拖动。我使用 touchesBegan、touchesMoved 和 touchesEnded 方法来识别触摸。我为 View
我的代码: var location = CGPoint(x:0,y:0) override func touchesBegan(touches: Set, withEvent event: UIEv
我正在尝试在我的 GameScene 中实现 ccTouchesBegan。 我已设置 isTouchEnabled = YES。我还在 touchDispatcher 上调用了 addStandar
我有以下代码可以在用户点击 View 时隐藏键盘,但 TouchBegan 根本不会触发: class LoginViewController: UIViewController, UITextFie
我有一个奇怪的问题,touchesBegan 处理程序被多次调用。如果我快速点击 UIView (UIButton) 2 次,touchesBegan 被调用 3 次。 我通过简单的时间测量解决了这个
所以问题是,当我启动它时,soundOff 按钮位于 soundOn 上方,但它是不可见的。所以我只看到了 soundOn 按钮,当我尝试点击 soundOn 按钮时,它实际上只是点击了 soundO
我有一个函数,每 2 秒被重复调用一次,每次从屏幕顶部带来一个具有随机纹理的球。我希望能够在 touchesBegan 中使用这个球,但我不能,因为它是一个局部变量。我试过将它设为全局变量,但这给了我
我正在尝试为我的应用程序弹出一个弹出窗口。到目前为止,弹出窗口在固定坐标处弹出,我试图让它在用户点击的位置弹出。这是我的: override func touchesBegan(touches: Se
// // CommentViewController.swift // Bordy // // Created by Micheal Tyler on 9/22/17. // Copyrig
是否可以在项目中的多个位置或对象中使用 touchesBegan 方法? 例如,如果我有一个带有两个按钮的主类: class GameScene: SKScene, SKPhysicsContactD
我正在尝试检测一个节点是否是敌人。如果是,我想删除它。我正在尝试使用 touched nodes 名称来检测这一点。我能够检测到节点的名称是否为敌人,但我不知道如何删除它。谢谢您的帮助! :) 这里是
我正在使用 UIPicker 来填充 UITextField 而不是键盘。这很好用,但我现在无法关闭 UIPicker。我希望能够点击屏幕上的任意位置并关闭 UIPicker。我已经尝试了每种触摸方法
我正在使用 NSTimer 构建一个旋转横幅来跟踪当前图像,该图像由 5 个不同的图像制成动画。我有一个 touchesBegan 设置,如果有人点击它,可以继续处理横幅上的触摸事件。我的概念验证有效
我目前正在使用 swift 开发一个 iOS 应用程序。我使用 override 编写了我自己的 tocuhesBegan 和 tochesEnded 函数。现在,当我使用 self.button 时
我的 Storyboard看起来像这样: Controller top/bottom layout guide view UIview UIBu
我想使用 touchesBegan 方法来了解用户何时在我的 TableView 中的 UITextField 之外点击。 我有一个包含 TableView 的 UIView,我有以下方法: - (v
touchesBegan: withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等只能被UIView捕获(如有问题请指出
我有一个文本字段,当我触摸屏幕上的其他位置时,它会隐藏键盘(通过我的 TouchesBegan 函数并辞职......等等)。但是当我触摸 Textview 时,TouchesBegan 不会被调用,
我想检测何时触摸其他地方而不是特定的 UIView 。我正在使用touchesBegan然而,对于它,它总是打印“触摸在外面”(参见下面的代码)。我错过了什么? 我从中得到了帮助post . over
我的 SKScene 有 1 个空节点 (buttonsGroup)。在我的 GameView 类中,我创建一个节点 (ball1),它是空节点的父节点。 buttonsGroup = chi
我是一名优秀的程序员,十分优秀!