Questions tagged «uigesturerecognizer»

UIGestureRecognizer是用于具体手势识别器类的抽象基类。手势识别器对象(或简称为手势识别器)使识别手势并执行该识别的逻辑解耦。当这些对象之一识别出通用手势,或者在某些情况下识别出手势更改时,它将向每个指定的目标对象发送操作消息。

7
按下时会两次调用UILongPressGestureRecognizer
我正在检测用户是否已按下2秒钟: UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 2.0; [self addGestureRecognizer:longPress]; [longPress release]; 这是我处理长按的方式: -(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{ NSLog(@"double oo"); } 当我按下2秒钟以上时,文本“ double oo”被打印两次。为什么是这样?我该如何解决?


11
您可以将UIGestureRecognizer附加到多个视图吗?
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)]; [self.view1 addGestureRecognizer:tapGesture]; [self.view2 addGestureRecognizer:tapGesture]; [tapGesture release]; 在上面的代码中,仅view2可识别点击。如果我注释掉第三行,则view1可以识别点击。如果我是对的,并且您只能使用一次手势识别器,那么我不确定这是一个错误还是仅需要更多文档。


23
如何以编程方式快速调用UIView上的手势点击
我有一个UIView,并向其中添加了点击手势: let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) tap.delegate = self myView.addGesture(tap) 我试图在测试文件中以编程方式调用它。 sendActionForEvent 我正在使用此功能,但无法正常工作: myView.sendActionForEvent(UIEvents.touchUpDown) 它显示了无法识别的选择器发送到实例。 我怎么解决这个问题?

9
UITapGestureRecognizer-单击和双击
我正在尝试向UITapGestureRecognizers视图添加2 ,一个用于单击,一个用于双击事件。单抽头识别器正在按预期运行(单独运行)。但是我似乎无法使双击识别器正常工作。 已经尝试具有类似性质的实验:cancelsTouchesInView,delaysTouchesBegan和delaysTouchesEnded,但仍然无法正常工作。 当我双击时,单击识别器将始终被激活,并且双击事件也将发送到超级视图。但是自定义双击识别器似乎根本没有得到通知。 文档似乎表明可以将上述3个属性用于此目的。但是我不确定应该设置哪些值以及在哪些识别器上(单,双或双)。希望有人对此有所帮助。 以下是最新更新的代码块。 // ****** gesture recognizers ****** - (void)addSingleAndDoubleTapGestureRecognizersToView:(UIView *)view { // single tap UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector(handleSingleTapOnView:)]; [singleTapRecognizer setNumberOfTouchesRequired:1]; [view addGestureRecognizer: singleTapRecognizer]; // double tap UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector (handleDoubleTapOnView:)]; [doubleTapRecognizer setNumberOfTouchesRequired:2]; [singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer]; …

22
UIPanGestureRecognizer-仅垂直或水平
我有一个视图,UIPanGestureRecognizer可以垂直拖动视图。因此,在识别器回调中,我仅更新y坐标以移动它。此视图的超级视图具有一个UIPanGestureRecognizer将水平拖动视图的视图,仅更新x坐标。 问题在于,第一个UIPanGestureRecognizer事件是垂直移动视图,因此无法使用超级视图手势。 我努力了 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer *)otherGestureRecognizer; 两者都可以,但是我不想要那样。我希望仅在运动明显为水平时才能检测到水平。因此,如果UIPanGestureRecognizer具有direction属性,那就太好了。 我该如何实现这种行为?我发现文档非常混乱,因此也许有人可以在这里更好地解释它。

21
如何禁用UIPageViewController的滑动手势?
在我的情况下,parent UIViewControllercontains UIPageViewController包含UINavigationControllerwhich包含UIViewController。我需要向最后一个视图控制器添加一个滑动手势,但是对滑动的处理就好像它们属于页面视图控制器一样。我尝试以编程方式和通过xib进行此操作,但没有结果。 因此,据我了解,只有UIPageViewController处理好手势,我才能实现自己的目标。如何解决这个问题?

6
手势识别器和按钮动作
我有一个看起来像这样的视图层次结构: UIView (A) UIView > UIImageView UIView > UIView (B) UIView > UIView (B) > Rounded Rect Button UIView > UIView (B) > UIImageView UIView > UIView (B) > UILabel 我已将手势识别器附加到我的UIView(B)。我面临的问题是我没有对UIView(B)内的Rounded Rect Button采取任何操作。singleTap手势识别器捕获/覆盖按钮的“ Touch Up Inside”事件。 我该如何运作?我认为响应者链层次结构将确保将优先考虑按钮触摸事件,并且它将被触发!我想念什么? 以下是一些相关代码: #pragma mark - #pragma mark View lifecycle (Gesture recognizer setup) - (void)viewDidLoad …

18
在UINavigationController中隐藏导航栏时不向后滑动
我喜欢从将您的视图嵌入到NET中继承的滑动包UINavigationController。不幸的是,我似乎找不到隐藏它的方法,NavigationBar但仍然可以向后滑动触摸板gesture。我可以编写自定义手势,但我不希望这样做,而是依靠UINavigationController向后滑动gesture。 如果我在情节提要图中取消选中,则后向滑动不起作用 或者,如果我以编程方式将其隐藏,则采用相同的方案。 - (void)viewDidLoad { [super viewDidLoad]; [self.navigationController setNavigationBarHidden:YES animated:NO]; // and animated:YES } 有没有办法隐藏顶部NavigationBar并仍然可以滑动?

10
UIGestureRecognizer阻止子视图以处理触摸事件
我正在尝试找出正确的方法。我试图描述这种情况: 我要添加一个UITableView作为的子视图UIView。在UIView一个分接开关和响应pinchGestureRecognizer,但这样做的情况下,实现代码如下停止反应,这两个手势(它仍然反应刷卡)。 我已经将其与以下代码一起使用,但这显然不是一个不错的解决方案,并且我相信有更好的方法。这放在UIView(超级视图)中: -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { if([super hitTest:point withEvent:event] == self) { for (id gesture in self.gestureRecognizers) { [gesture setEnabled:YES]; } return self; } for (id gesture in self.gestureRecognizers) { [gesture setEnabled:NO]; } return [self.subviews lastObject]; }

14
禁用手势以下拉表单/页面表单模式演示
在iOS 13中,可以使用平移手势关闭使用表单和页面工作表样式的模式演示。在我的一张表单中,这是有问题的,因为用户会拖入该框,从而干扰手势。它将屏幕下拉而不是画一条垂直线。 如何在以图纸形式显示的模态视图控制器中禁用垂直滑动以消除手势? 设置isModalInPresentation = true仍然允许将工作表拉下,但不会关闭。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.