我试图假手势,但我不知道该怎么做。有一些复杂的代码决定了pan手势会发生什么,所以在进入并抽象出所有逻辑之前,我想知道是否有人知道伪造手势的方法。感谢。
答案 0 :(得分:3)
不幸的是,API没有提供以编程方式触发手势的方法,也没有提供对UIGestureRecognizer的目标和选择器的公共访问。
但是,如果您希望对单元测试执行此操作,则可以通过执行以下操作来访问目标和选择器:
NSArray *targets = [panGesture valueForKey:@"_targets"];
NSArray *actions = [panGesture valueForKey:@"_actions"];
然后,您可以遍历这些数组并在目标上调用操作:
[target performSelector:selector withObject:panGesture];
答案 1 :(得分:2)
假装平移手势"我认为你的意思是将视图移动到目前不在的地方。 UIView
动画可以用于此目的。
[UIView beginAnimations:@"Fake-A-Pan" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
self.frame = CGRectMake(/* new coordinates for frame here */);
[UIView commitAnimations];
通过使用动画来更改视图的位置,您基本上可以假装一个平底锅"。 修改如建议的评论,也可以使用基于块的动画。
[UIView animateWithDuration:.5f
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^ {
self.frame ... // adjust your view here
}
completion:^(BOOL finished) {
NSLog(@"Done animating");
}];