如何为 TapGesture 识别器设置框架

Posted

技术标签:

【中文标题】如何为 TapGesture 识别器设置框架【英文标题】:How to set frame for TapGesture Recognizer 【发布时间】:2016-11-10 09:11:52 【问题描述】:

我有一个 imageview,我只想点击 imageview 的一侧。是否可以为手势设置框架?任何人都可以提供解决方案吗?

【问题讨论】:

只需在图像视图的一侧添加一个透明视图,然后向该视图添加手势... 欢迎苏米... 欢迎来到 Stack Overflow!我编辑了您问题的标题,以包含更多细节并使您的问题更加清晰。您不能为 ant 类型的手势设置框架,您可以将手势识别器添加到视图对象,然后您可以操作视图的框架或在您添加了点击手势的视图中测试点击的位置。跨度> 【参考方案1】:

使用UIGestureRecognizerDelegate,我想你可以了解如何比较:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
    if ([touch locationInView:yourview].x < somePoint.x) 
        return false;
     else 
        return true;
    

【讨论】:

【参考方案2】:

您可以在图像视图的顶部覆盖一个视图并将点击识别器添加到这个新视图中,这样的事情将使图像的左侧可点击

UIView tapView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, imageView.frame.size.width/2, imageView.frame.size.height)];

[imageView addSubView:tapView]

UITapGestureRecognizer *singleFingerTap = 
  [[UITapGestureRecognizer alloc] initWithTarget:self 
                                          action:@selector(handleSingleTap:)];
[tapView addGestureRecognizer:singleFingerTap];

【讨论】:

【参考方案3】:

您可以根据您的要求简单地将 UIView 放在带有框架的 imageView 顶部,然后在该 UIView 上放置点击手势。

您可以通过情节提要/xib 或以编程方式执行此操作。

例如,通过编程方式 - 您只想在 imageView 宽度为 50 px 的区域内点击。为此:

    UIView *vw = [[UIView alloc] initWithFrame:CGRectMake(imgView.frame.origin.x, imgView.frame.origin.y, 50, imgView.frame.size.height)];

    // add gesture to view
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
    tapGesture.numberOfTapsRequired = 2;
    [vw addGestureRecognizer:tapGesture];

    [imgView addSubview:vw];

现在来处理你的双击

-(void)handleTapGesture:(UITapGestureRecognizer *)gesture

    // handle double tap

【讨论】:

以上是关于如何为 TapGesture 识别器设置框架的主要内容,如果未能解决你的问题,请参考以下文章

如何为实体框架代码优先迁移设置隔离级别

如何为站点框架 django 设置多个 settings.py?

为啥 Grid 的 TapGesture 识别器在 UWP 的情况下响应缓慢,但在 Android 和 iOS 中运行良好?

如何为 iphone 应用程序设置代码框架

iOS TapGesture 不工作

使用 tapGesture 自定义 UIView