如何以编程方式添加UIPanGestureRecognizer

时间:2012-07-17 04:45:38

标签: xcode uigesturerecognizer

在我的应用中,您可以触摸屏幕,屏幕上会显示可编辑的UITextField。我希望能够在屏幕上移动这些新添加的UITextFields。我还想添加一个旋转手势和一个捏手势。现在这很难做到,因为每次点击屏幕时都会添加一个新的SubView(UITextField)。以下是我的编码:

- (IBAction)addText:(UITapGestureRecognizer *)recognizer 
{ 
   if (recognizer.state == UIGestureRecognizerStateEnded) 
   {       
        UITextField *newText = [[UITextField alloc] initWithFrame:CGRectMake(40, 205, 280, 128)];
        newText.hidden = NO;
        [self.view addSubview:newText];
        newText.text = @"phrase";
        [newText setFont:[UIFont fontWithName:@"ArialRoundedMTBold" size:60]];
        newText.borderStyle = UITextBorderStyleNone;
        UIPanGestureRecognizer *pan= [[UIPanGestureRecognizer alloc] initWithTarget:newText action:nil];

        CGPoint translation = [pan translationInView:newText];
        pan.view.center = CGPointMake(pan.view.center.x + translation.x, pan.view.center.y + translation.y);
        [pan setTranslation:CGPointMake(0,0) inView:self.view];
     }
}

1 个答案:

答案 0 :(得分:1)

有几种方法可以在手势识别器之间设置依赖关系。这里看起来很有用的一种方法是requireGestureRecognizerToFail:方法。创建pan识别器后,添加以下内容:

[recognizer requireGestureRecognizerToFail:pan];

现在点击识别器(在recognizer变量中)将不会激活,除非平移识别器已确定用户平移。