In my app, you can touch the screen and an editable UITextField appears on the screen. I want to be able to move these newly added UITextFields around the screen. I would also like to add a rotation gesture and a pinch gesture. This is very difficult to do right now, because every time the screen is tapped a new SubView is added (UITextField). Below is my coding:
- (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];
}
}
There are a few ways to set up dependencies between gesture recognizers. One way which seems useful here is the
requireGestureRecognizerToFail:method. After you create thepanrecognizer, add this:Now the tap recognizer (in the
recognizervariable) won’t activate unless the pan recognizer has decided that the user is not panning.