我的UIRotationGestureRecgonizer处理程序回调未在iOS中调用

时间:2013-10-14 10:31:39

标签: ios rotation uigesturerecognizer

我正在尝试旋转添加到主视图的自定义视图。我试图将手势识别器添加到主视图和子视图中。这是我的代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIView *demoView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    UIRotationGestureRecognizer *rg= [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
    [rg setDelegate:self];
    self.view.userInteractionEnabled = YES;
    demoView.userInteractionEnabled = YES;
    [demoView addGestureRecognizer:rg];
    [self.view addGestureRecognizer:rg];
    demoView.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:demoView];
}

-(IBAction)handleTap:(UIRotationGestureRecognizer *)recognizer
{
    //NSLog(@"HERE");
    recognizer.view.transform = CGAffineTransformMakeRotation([recognizer rotation]);
    recognizer.rotation = 0;
    //NSLog(@"AND HERE");
}

1 个答案:

答案 0 :(得分:0)

问题是一个geturerecognizer只能附加到一个视图。根据您的要求,您需要两个手势识别器,但您可以让它们调用相同的选择器,因此无需执行两次。

编辑: 有点难以在文档中清楚地找到这一点,但考虑到view - 属性是单个视图,而不是数组或集合或其他什么,它有很多意义。 继承人的文件: https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/instp/UIGestureRecognizer/view

下一个编辑

这个stackoverflow-answer也说明了我的观点: Can you attach a UIGestureRecognizer to multiple views? 所以,无论是谁投票给我答案,至少告诉我原因。