Iphone xcode:如何在某些视图之外禁用手势识别器?
我有一个用于uiimageView的一键式手势识别器,使用户可以在该uiimageView上录制的任何位置点击并添加uiTextField 问题是,有时我会将文本字段从uiimageview中删除(靠近)。我希望文本字段不会超出uiimageview框架 以下是我在ViewDidLoad中的代码:Iphone xcode:如何在某些视图之外禁用手势识别器?,iphone,xcode,uigesturerecognizer,Iphone,Xcode,Uigesturerecognizer,我有一个用于uiimageView的一键式手势识别器,使用户可以在该uiimageView上录制的任何位置点击并添加uiTextField 问题是,有时我会将文本字段从uiimageview中删除(靠近)。我希望文本字段不会超出uiimageview框架 以下是我在ViewDidLoad中的代码: // Create gesture recognizer recognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self acti
// 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;
}
您可以使用
UIGestureRecognitizerDelegate
中的GestureRecognitizer:shouldReceiveTouch:
方法查看触摸发生的位置,并决定是否要响应手势。如果触摸太靠近UIImageView的边缘,则返回NO
,否则返回YES
。或者只需检查touch.view
,查看触摸是否发生在UIImageView
上
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch;