标签: uigesturerecognizer

按下时,UILongPressGestureRecognizer会被调用两次

我正在检测用户是否已按下2秒钟:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                             initWithTarget:self 
                                             action:@selector(handleLongPress:)];
        longPress.minimumPressDuration = 2.0;
        [self addGestureRecognizer:longPress];
        [longPress release];
Run Code Online (Sandbox Code Playgroud)

这就是我处理长按的方式:

-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
    NSLog(@"double oo");
}
Run Code Online (Sandbox Code Playgroud)

当我按下超过2秒钟时,文本"double oo"被打印两次.为什么是这样?我该怎么办?

iphone cocoa-touch objective-c gesture-recognition uigesturerecognizer

352
推荐指数
7
解决办法
9万
查看次数

如何在iOS 7上的UINavigationController中禁用后滑动手势

在iOS 7中,Apple添加了一个新的默认导航行为.您可以从屏幕的左边缘滑动以返回导航堆栈.但在我的应用程序中,此行为与我的自定义左菜单冲突.那么,是否可以在UINavigationController中禁用这个新手势?

objective-c uinavigationcontroller uigesturerecognizer ios ios7

320
推荐指数
10
解决办法
14万
查看次数

你能将UIGestureRecognizer附加到多个视图吗?

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,只view2识别了点击.如果我注释掉第三行,那么点击就会view1被识别出来.如果我是对的,你只能使用一次手势识别器,我不确定这是一个bug还是只需要一些文档.

objective-c uigesturerecognizer ios

221
推荐指数
5
解决办法
7万
查看次数

UIImageView上的UIGestureRecognizer

我有一个UIImageView,我希望能够调整大小和旋转等.

可以UIGestureRecognizer添加到UIImageView

我想UIImageView在运行时创建一个旋转和捏合识别器.

如何添加这些识别器?

objective-c uiimageview uigesturerecognizer ios

176
推荐指数
5
解决办法
10万
查看次数

UITapGestureRecognizer - 单击和双击

我正在尝试将2添加UITapGestureRecognizers到视图中,一个用于单击,一个用于双击事件.单击识别器按预期工作(单独).但我似乎无法让双击识别器工作.

试过具有类似性质的实验:cancelsTouchesInView,delaysTouchesBegandelaysTouchesEnded,但仍然无法正常工作.

当我双击时,单击识别器将始终被激活,双击事件也将被发送到超级视图.但似乎根本没有通知自定义双击识别器.

文件似乎表明上述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];
    [view addGestureRecognizer: doubleTapRecognizer];         
}

- (void)handleSingleTapOnView:(id)sender
{

}

- (void)handleDoubleTapOnView:(id)sender
{

}
Run Code Online (Sandbox Code Playgroud)

iphone uigesturerecognizer ios uitapgesturerecognizer

153
推荐指数
5
解决办法
9万
查看次数

UIPanGestureRecognizer - 仅垂直或水平

我有一个视图,UIPanGestureRecognizer可以垂直拖动视图.所以在识别器回调中,我只更新y坐标来移动它.这个视图的超级视图有一个UIPanGestureRecognizer水平拖动视图,只是更新x坐标.

问题是第一个UIPanGestureRecognizer是事件是垂直移动视图,所以我不能使用超视图手势.

我试过了

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
 shouldRecognizeSimultaneouslyWithGestureRecognizer:
                            (UIGestureRecognizer *)otherGestureRecognizer;
Run Code Online (Sandbox Code Playgroud)

两者都会奏效,但我不希望如此.我希望只有在运动明显水平的情况下才能检测水平.所以如果UIPanGestureRecognizer有一个方向属性会很棒.

我怎样才能实现这种行为?我发现文档很混乱,所以也许有人可以在这里更好地解释它.

uigesturerecognizer ios

142
推荐指数
8
解决办法
6万
查看次数

如何在swift中以编程方式调用手势点击UIView

我有一个UIView,并且我已添加了点击手势:

let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Run Code Online (Sandbox Code Playgroud)

我试图在testfile中以编程方式调用它.

sendActionForEvent
Run Code Online (Sandbox Code Playgroud)

我正在使用此功能,但它无法正常工作:

myView.sendActionForEvent(UIEvents.touchUpDown)
Run Code Online (Sandbox Code Playgroud)

它显示发送到实例的无法识别的选择器.

我怎么解决这个问题?

提前致谢

iphone uigesturerecognizer ios swift ios8

142
推荐指数
15
解决办法
23万
查看次数

如何禁用UIPageViewController的滑动手势?

在我的情况下,父UIViewController包含UIPageViewController哪个包含UINavigationController哪个包含UIViewController.我想向最后一个视图控制器添加滑动手势,但滑动处理就像它们属于页面视图控制器一样.我尝试以编程方式和通过xib执行此操作,但没有结果.

据我了解,在UIPageViewController处理手势之前我无法实现目标.如何解决这个问题?

uiviewcontroller uigesturerecognizer ios uipageviewcontroller

114
推荐指数
9
解决办法
7万
查看次数

手势识别器和按钮动作

我有一个看起来像这样的视图层次结构:

UIView (A)
UIView > UIImageView
UIView > UIView (B)
UIView > UIView (B) > Rounded Rect Button
UIView > UIView (B) > UIImageView
UIView > UIView (B) > UILabel
Run Code Online (Sandbox Code Playgroud)

我已将手势识别器附加到我的UIView(B).我面临的问题是我没有对UIView(B)中的Rounded Rect Button进行任何操作.singleTap手势识别器捕获/覆盖按钮的Touch Up Inside事件.

我怎样才能使它工作?我认为响应者链层次结构将确保按钮触摸事件将被优先使用,并且它将被触发!我错过了什么?

这是一些相关的代码:

#pragma mark -
#pragma mark View lifecycle (Gesture recognizer setup)

- (void)viewDidLoad {
    [super viewDidLoad];

    // double tap gesture recognizer
    UITapGestureRecognizer *dtapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestureRecognizer:)];
    dtapGestureRecognize.delegate = self;
    dtapGestureRecognize.numberOfTapsRequired = 2;
    [self.viewB addGestureRecognizer:dtapGestureRecognize];

    // single tap gesture recognizer
    UITapGestureRecognizer *tapGestureRecognize = …
Run Code Online (Sandbox Code Playgroud)

iphone conflict uibutton ibaction uigesturerecognizer

96
推荐指数
6
解决办法
8万
查看次数

UIGestureRecognizer阻止子视图处理触摸事件

我试图弄清楚这是如何以正确的方式完成.我试图描绘这种情况: 在此输入图像描述

我正在添加一个UITableView作为a的子视图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];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uiview uiresponder uigesturerecognizer ios

82
推荐指数
4
解决办法
6万
查看次数