2012-07-17 153 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