2012-07-23 46 views
0

我有一個輕觸手勢識別器爲uiimageView,使用戶可以點擊並添加uiTextField他在這個uiimageview磁帶上的任何位置。xcode:如何禁用手勢識別器出一些視圖?

問題,有時我得到我的文本字段(近)我的uiimageview。我希望textfield不會超過uiimageview框架。

這裏是我的viewDidLoad代碼:

// Create gesture recognizer 
recognizer = 
[[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(addText:)] autorelease]; 

// Set required taps and number of touches 
[recognizer setNumberOfTapsRequired:1]; 
[recognizer setNumberOfTouchesRequired:1]; 

// Add the gesture to the view 
[self.img addGestureRecognizer:recognizer]; 

,並在方法addText:

CGPoint point = [recognizer locationInView:[self view]]; 

UITextField * textFld = [[UITextField alloc]init]; 

[textFld setDelegate:self]; 

[textFld addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 

[textFld setFont:[UIFont fontWithName:@"System Bold" size:fontSize]]; 

CGRect frame ;  
frame.origin.x = point.x; 
frame.origin.y = point.y; 
frame.size.width=300; 
frame.size.height=80; 

textFld.frame=frame; 

[self.img addSubview:textFld]; 

[textFld release]; 

終於imageMoved:withEvent:方法

- (IBAction) imageMoved:(id)sender withEvent:(UIEvent *) event 
{ 
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view]; 
UIControl *control = sender; 
control.center = point; 

} 

回答

2

你可以使用gestureRecognizer:shouldReceiveTouch:方法在您的UIGestureRecognizerDelegate中查看觸摸發生的位置決定是否要回應該手勢。如果觸摸距離您的UIImageView的邊緣太近,則返回NO,否則返回YES。或者只需檢查touch.view以查看您的觸摸是否發生在您的UIImageView上。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
     shouldReceiveTouch:(UITouch *)touch;