Tag: uigesturerecognizer

如何实现velocityInView:用于自定义手势识别器?

我正在实现一个自定义的UIGestureRecognizer子类。 我想实现velocityInView:就像UIPanGestureRecognizer做的一样。 但我不知道如何去做。 我如何计算以点/秒为单位的速度?

UIScrollView决定拖动和点击

我试图确定在一个UIScrollView视图内的单个选项卡。 问题是UIScrollview捕捉所有的手势。 我到目前为止所尝试的:我在我的UIScrollView覆盖下面的方法: -(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view { UITouch *touch = [touches anyObject]; if([touch tapCount]== 2) return YES; return NO; } 这工作正常,我现在可以到达我的UIView的UITapGestureRecognize,不幸的是我只能检测双击,因为[touch tapCount] == 1总是被调用(拖动或放大UIScrollView)。 但实际上UIScrollview并不需要“单抽头function” 有没有办法来决定之间的拖动(滚动或缩放)和一个单一的水龙头在这种方法? 我无法find它.. -(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 在此先感谢Fabi

如果在最清晰的视图中显示并且不同的视图可以处理它们时,如何忽略触摸事件

我有一个清晰的UIView,它附有手势识别器。 这个清晰的uiview覆盖了整个超级视图,可以从任何地方调用手势。 在这个清晰的UIView下,坐着不同的组件,比如表格,button,collectionview等等 清楚的UIView不知道什么是在任何时候。 我想要什么 – 如果一个在清晰的视图下的视图可以处理触摸事件(或任何types的手势) – 清晰的视图应该忽略该事件 – 事件将通过可以处理它的底层视图。 我试过了 -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 但我不知道如何确保底层视图可以处理它。

UIPanGestureRecognizer不能平滑地移动对象

我试图使用UIPanGestureRecognizer移动我的对象,但我似乎无法让它顺利移动。 当我朝一个特定的方向移动并改变到相反时,它不会立即作出反应。 我认为这个值可能有问题,因为它在“ – >”方向是正值,而在“ – ”方向是负值。 我的代码如下: – (void)panDetected:(UIPanGestureRecognizer *)panRecognizer { CGPoint pointA = [panRecognizer locationInView:self.view]; CGPoint pointB = [panRecognizer translationInView:self.view]; if(panRecognizer.state == UIGestureRecognizerStateEnded || panRecognizer.state == UIGestureRecognizerStateChanged) { _camera.x += pointB.x * 0.0001f; } } 有没有人有更合适的方法来解决这个任务? 提前致谢。

我已经使UIPanGestureRecognizer只检测大多数垂直平底锅,我如何使它只能检测到真正的垂直平底锅?

我刚刚实现了这个: – (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer { CGPoint translation = [panGestureRecognizer translationInView:someView]; return fabs(translation.y) > fabs(translation.x); } (如此处所述) 但是,如果用户垂直摆动对angular线,它将开始。 我如何让宽容更严格,认为是垂直的? 基本上,下面的图片描述了我之后。 第一个图是现在检测到的,这个区域内的任何东西,第二个是我想要的。

使UIGestureRecognizer接收在子视图上开始的触摸

我附加了一个自定义的UIGestureRecognizer到一个UIView几乎填满整个屏幕。 这个视图包含一个小的子视图,它也需要接受正常的触摸。 问题:在这个子视图上开始的触摸不会被连接到其父项的识别器处理。 我希望gestureRecognizer成为第一优先级,即使子视图被触摸也可以工作。 我怎样才能将这个子视图上的所有触摸转发给它的父项,以便我的gestureRecognizer可以完成它的工作?

ios-缩放和旋转蒙版UIImageView

我是iOS新手,需要具备以下需求。 请给我一些指导如何做到这一点。 谢谢! 有一个图像(源)被另一个图像(帧) 用户可以拖动,缩放,旋转源图像。 帧图像保持不变。 我知道如何使用CGImageCreateWithMask以及如何把uiimageview放在一个滚动视图中捏放大。 但我不知道如何将这些结合在一起,并进行自定义控制。

手势识别器如果在类初始化时创build,则不起作用

在集合视图中,我在类初始化时创build一个手势识别器。 在viewDidLoad方法中,然后将手势识别器添加到集合视图。 class ViewController: UIViewController { @IBOutlet weak var collectionView: UICollectionView! let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongGesture(gesture:))) @objc func handleLongGesture(gesture: UILongPressGestureRecognizer) { // some code } override func viewDidLoad() { super.viewDidLoad() collectionView.addGestureRecognizer(longPressGesture) } } 有了这个,手势识别器不起作用。 修复很简单:将longPressGesture移动到viewDidLoad方法就足够了,一切都按预期工作。 不过,我觉得第一个版本不行,这有点令人惊讶。 任何人都可以解释为什么第一个版本不工作? 这是因为,当手势识别器被创build时,收集视图还没有准备好手势? 那么,手势识别器必须知道它的目标才能被创build?

查看透明度和手势处理

我目前正在尝试创build一个视图来处理可能发生在我的应用程序上的所有手势。 我希望这个视图是透明的,以便把下面的其他视图,他们仍然会显示(我不想让它们处理视图的子视图) 手势处理工作正常,直到我从此设置“clearColor”的视图颜色,它是视图消失。 除非我坚持子视图,在这种情况下,手势只发生在子视图上时。 因此,我的问题是:我怎样才能让手势事件发生在一个透明的视图上?

如何在iOS中连接两个button(点)?

我想做一个项目,我必须触摸一个点,并连接到另一个点,并连接到另一个点后。 当我连接一个点与另一个点时,线会在它们之间创build。 其实当我点击/触摸一个点线会显示,当我触摸第二个点时,线将创build两个点之间。 我无法做到这一点,我试图在网上search,但无法find解决scheme。 这是我的需要喜欢这一个https://play.google.com/store/apps/details?id=zok.android.dots&hl=en 我认为这是由UIGesture Recogniser完成的? 还是这是别的? 我怎么能做到这一点? 任何意见或build议的专家将非常欢迎。