繁体   English   中英

xcode:如何从某些视图中禁用手势识别器?

[英]xcode : how to disable gesture recognizer out of some view?

我有一个uiimageView的单击手势识别器,使用户可以点击并添加uiTextField在他的uiimageview上录制的任何地方。

有时候我的文本字段(我的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;

}

您可以在UIGestureRecognizerDelegate使用gestureRecognizer:shouldReceiveTouch:方法查看触摸发生的位置,并决定是否要响应手势。 如果触摸太靠近UIImageView的边缘,则返回NO ,否则返回YES 或者只需检查touch.view以查看UIImageView上是否发生了触摸。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM