代码中的假锅手势

时间:2014-04-04 03:44:32

标签: ios objective-c gesture uipangesturerecognizer pan

我试图假手势,但我不知道该怎么做。有一些复杂的代码决定了pan手势会发生什么,所以在进入并抽象出所有逻辑之前,我想知道是否有人知道伪造手势的方法。感谢。

2 个答案:

答案 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");
                 }];