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

Posted

技术标签:

【中文标题】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:如何仅使用轻击手势同时允许触发的转场和发送的动作的主要内容,如果未能解决你的问题,请参考以下文章

iOS/ObjC:“后备”轻击手势识别器?

为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势

为什么iOS中的轻敲手势识别器的界面构建器操作不会触发? [重复]

iOS 手势

向 UIImageView 添加轻击手势以更改 UILabel?

iOS开发之手势识别