如何使用iOS手势UIGestureRecognizer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用iOS手势UIGestureRecognizer相关的知识,希望对你有一定的参考价值。

参考技术A /*添加点按手势*/
//创建手势对象
UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapImage:)];
//设置手势属性
tapGesture.numberOfTapsRequired=1;//设置点按次数,默认为1,注意在ios中很少用双击操作
tapGesture.numberOfTouchesRequired=1;//点按的手指数
//添加手势到对象(注意,这里添加到了控制器视图中,而不是图片上,否则点击空白无法隐藏导航栏)
[self.view addGestureRecognizer:tapGesture];本回答被提问者和网友采纳

IOS:如何仅使用轻击手势同时允许触发的转场和发送的动作

【中文标题】IOS:如何仅使用轻击手势同时允许触发的转场和发送的动作【英文标题】:IOS: How to allow both triggered segues and sent actions using only a tap gesture 【发布时间】:2015-04-07 02:28:47 【问题描述】:

我正在创建一个具有特定图像的简单游戏,例如菜单按钮,并带有点击手势。点击手势调用一个方法并转到一个视图控制器(我的游戏菜单)。我的问题是当我点击这张图片时,它忽略了第二个动作。下图更好地描述了我的点击手势。 PS:getBackToMenu 是我设置游戏某些属性的方法。

【问题讨论】:

不要直接从按钮触发segue。使用getBackToMenu 方法中的performSegueWithIdentifier: 【参考方案1】:

您在这里所做的是直接从按钮触发 segue。因为这个segue首先被执行。

做一件事从按钮中删除segue以查看控制器并在具有某些标识符的控制器之间创建segue。

然后实现这个方法

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_IDENTIFIER"])
    
        YourViewController *vc = [segue destinationViewController];
        [vc setMyObjectHere:object];
    
 

然后在按钮按下事件时使用此方法执行 segue

- (IBAction)buttonPressed:(id)sender
//Do your primary task here Then Call performseguewithidentifier method
[self performSegueWithIdentifier:@"YOUR_SEGUE_IDENTIFIER" sender:sender];

【讨论】:

【参考方案2】:

当你即将执行segue动作时,可以在

中添加一些代码
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

您可以使用 segue.destinationController 获取目标控制器,然后在那里设置一些属性,就像传递一些数据一样。

顺便说一下,你可以识别哪个segue有效,添加

if ([segue.identifier isEqualToString:@"yourSegueName"])

【讨论】:

以上是关于如何使用iOS手势UIGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章

如何使用iOS手势UIGestureRecognizer

IOS:如何仅使用轻击手势同时允许触发的转场和发送的动作

如何检测同时手势的结束? (iOS)

如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏

ios10自定手势有啥用

如何在 ios 11 中使用主详细信息视图禁用向后滑动手势?