【问题标题】:xcode : how to disable gesture recognizer out of some view?xcode:如何在某些视图之外禁用手势识别器?
【发布时间】:2012-10-04 19:29:33
【问题描述】:

我有一个用于 uiimageView 的一键式手势识别器,使用户能够在此 uiimageview 上的任何位置点击并添加 uiTextField。

有时我将文本字段从 uiimageview 中取出(靠近)的问题。我希望文本字段无论如何都不会超过 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];

并在方法中添加文本:

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;

}

【问题讨论】:

    标签: iphone xcode uigesturerecognizer


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多