2012-07-17 109 views
0

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

- (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

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

[recognizer requireGestureRecognizerToFail:pan]; 

现在水龙头识别(在recognizer变量)将不会激活,除非平底锅识别已决定用户平移。

+0

目前,我刚刚拿出了UITapGestureRecognizer哈哈。我决定从UIBarButtonItem中添加UITextFields。现在,我的所有应用程序都添加了UITextField,但是当我想在屏幕上移动它时,整个UIView都会移动。 – 2012-07-17 05:22:19