如何以编程方式触发UIView的轻击手势识别器

时间:2016-08-30 06:26:35

标签: ios objective-c uiview uitapgesturerecognizer gesture-recognition

我想点击附加到UIView的{​​{1}}识别器并以编程方式触发它。我成功找到了一种查找UIView的点按手势识别器的方法。但现在我不知道如何以编程方式触发它。我正在开发应用crawler。因此,如果我有ViewController的源代码,我的抓取工具将开始抓取,找到subviews的所有ViewController。此外,抓取工具还会在gesture上找到subviews。并触发点击gesture

注意:我知道如何将手势识别器附加到UIView并触发它。但在我的情况下,我想自动化应用程序的点击过程。只要考虑我想运行时找到UIView的点击手势识别器并触发它。

3 个答案:

答案 0 :(得分:3)

我通过创造虚假触摸解决了这个问题。由于手势不会暴露其动作和选择器,因此无法触发手势。但是因为我想要点击UIView。我可以在UIView上创建一个虚假的触摸。此假触摸将自动触发轻击手势。 This链接非常有用。

答案 1 :(得分:1)

你不能,因为手势没有暴露其目标和动作。您需要创建一个子类来执行或使用某些私有API来访问这些值,以便您可以使用它们。如果您正在创建一般的东西,那么子类选项无论如何都不好,但更广泛的是,并非所有内容都适用于手势,因此您的解决方案不完整。

我认为大多数测试工具都使用辅助功能界面来查找交互式视图并以编程方式点击它们。

答案 2 :(得分:0)

techcraze兄弟一般Gesture Says

  

手势实际上是在屏幕的特定区域发生的一个或多个手指的触摸和移动,其中存在感兴趣的视图

涉及Tap gesture Recognizer

  

UITapGestureRecognizer:此课程考虑在视图上进行的点按手势。它可以用于处理单个或多个点击,使用一个或多个手指。点击是用户最常用的手势之一。

没有手指帮助,你不能自动做兄弟。

所以我们的代码附带

- (void)viewDidLoad
{
  UITapGestureRecognizer *tapgesture =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapView:)];
  tapgesture.numberOfTouchesRequired=1;
  [self.view addGestureRecognizer:tapgesture];
}

-(void)tapView:(UITapGestureRecognizer *)gesture
{
  NSLog(@"The taped tag view is - %ld",gesture.view.tag);
}