我想在视图中的任何对象上模拟鼠标指针和单击事件。到目前为止,我能够模拟鼠标指针,即鼠标指针通过在视图上拖动来移动。现在我想在单击模拟鼠标指针的基础对象上触发点击事件。假设一个按钮。这个概念是关于手指鼠标的。
问问题
1033 次
4 回答
1
我接到你了,
1)UITapGestureRecognizer
在鼠标指针上添加一个。
2)在tapgesture处理方法中,
得到指点,
CGPoint fingerlocation = [tap locationInView:self.view];
像这样制作一个fingerRect,
CGRect finderRect = CGRectMake(location.x - 5, location.y - 5, 10, 10);
遍历 self.view 中的所有 uiview
for (UIView *view in self.view.subviews) {
CGRect frameOfTheView = view.frame;
if(CGRectIntersectsRect(frameOfTheView, finderRect)){
NSLog(@"clicked on view %@", view);
return;
}
}
最后的方法是这样的,
-(void) handleTap:(UITapGestureRecognizer *) tap{
//get the tapped point
CGPoint location = [tap locationInView:self.view];
CGRect finderRect = CGRectMake(location.x - 5, location.y - 5, 10, 10);
for (UIView *view in self.view.subviews) {
CGRect frameOfTheView = view.frame;
if(CGRectIntersectsRect(frameOfTheView, finderRect)){
NSLog(@"clicked on view %@", view);
return;
}
}
}
这样您就可以检测到被触摸的视图,具体取决于您可以调用所需方法的视图。
于 2013-04-25T13:05:04.873 回答
0
稍加修改并查看 KIF 测试框架:
https://github.com/square/KIF/blob/master/Additions/UIView-KIFAdditions.m
这里是一个UIView::tapAtPoint
方法&一个_eventWithTouch
方法
在那里查看更多代码 .. 它并不是所有公开记录的 API,因此您可能会因此而被拒绝:D
于 2013-04-25T12:54:12.063 回答
-1
您是否需要这样做才能运行 iOS 应用程序的自动化测试?如果是这样,这个线程很老,但有相关材料的链接。 堆栈溢出 402389
于 2013-04-25T12:03:03.443 回答
-2
你不能直接模拟触摸!!!!这就是为什么会有测试之类的东西。您要么执行此操作(运行应用程序,单击并移动),要么不执行。
另外..它被称为触摸,而不是点击
于 2013-04-25T12:03:19.767 回答