使用 UITapGestureRecognizer 根据 iPhone 中的手指触摸位置添加新视图

Posted

技术标签:

【中文标题】使用 UITapGestureRecognizer 根据 iPhone 中的手指触摸位置添加新视图【英文标题】:adding the new view according to the finger touch location in iPhone using UITapGestureRecognizer 【发布时间】:2013-04-26 11:32:46 【问题描述】:

给大家 我正在使用

 UITapGestureRecognizer*singleTap = [[[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap:)] autorelease];
    singleTap.numberOfTouchesRequired = 2;
    [self.view addGestureRecognizer:singleTap

为了接触

在 doSingleTap: 方法中我有这个

-(void)doSingleTap:(UITapGestureRecognizer *)recognizer

    CGPoint point = [recognizer locationOfTouch:0 inView:self.view];
    NSLog(@"location X =>%f,location  =>%f ",point.x,point.y);
    CGPoint point1 = [recognizer locationOfTouch:1 inView:self.view];
    NSLog(@"location X =>%f,location  =>%f ",point1.x,point1.y);

     NSLog(@"location X =>%f,location  =>%f ",x,y);
    UIView *test1 = [[UIView alloc]initWithFrame:CGRectMake(point.x, point1.y, x, y)];
    test1.backgroundColor= [UIColor greenColor];
    [self.view addSubview:test1];



在根据手指位置或位置视图在主视图上添加新视图时遇到问题,根据位置正确地在视图上添加。

我希望根据两个手指添加视图并自动调整它们的 (x,y,w,h)。 如果有人帮助我,我需要帮助 在此先感谢我对此进行了谷歌搜索,但没有得到任何帮助

【问题讨论】:

CGRectMake中x & y的值是多少? 我只是根据第一根手指添加 x 位置,根据第二根手指添加 y 但我认为这是错误的@Rafeek 你有什么错误吗?.. NO 但是新视图添加到了错误的位置,而不是在两个手指之间 我没听懂你怎么用这个 【参考方案1】:

与 point.x 比较,point1.x 取较小的 1 作为 x,对 y 做同样的事情(与 point.y 和 point1.y 比较,较小的 1 作为 y)。将 point.x 和 point1.x 之间的差异作为宽度,对高度执行相同操作(point.y 和 point1.y 之间的差异)将解决问题

【讨论】:

OK 如果现在得到关于 (?,?,W,H) 的 (W,H)BUt 比较 point.x 和 point1.x 取小的一个作为 x,也比较 point.y 和 point1.y 和较小的作为 y,然后 'CGRectMake(x,y,width,height)' 取高度和宽度时必须检查它的+ve或-ve如果-ve然后转换为+ve if(point.x>point1.x) locx = point1.x; if(point.xpoint1.y) locy = point1.y; if(point.y 位置设置不正确【参考方案2】:
float x = (point.x < point1.x) ? point.x : point1.x;
float y = (point.y < point1.y) ? point.y : point1.y;
float width = fabsf(point.x - point1.x);
float height = fabsf(point.y - point1.y);
UIView *test1 = [[UIView alloc]initWithFrame:CGRectMake(x, y,width,height)];

【讨论】:

【参考方案3】:

尝试用下一个来计算视图的矩形:

float x = MIN(point.x, point1.x);
float y = MIN(point.y, point1.y);
float width = fabsf(point.x - point1.x);
float height = fabsf(point.y - point1.y);
CGRect frame = CGRectMake(x, y, width, height);

【讨论】:

以上是关于使用 UITapGestureRecognizer 根据 iPhone 中的手指触摸位置添加新视图的主要内容,如果未能解决你的问题,请参考以下文章

使用UITapGestureRecognizer传递参数

在 Swift 中使用 UITapGestureRecognizer 中的参数

使用 UITapGestureRecognizer

使用 UITapGestureRecognizer 时不会调用 textFieldShouldEndEditing

UIlabel 中的 UITapGestureRecognizer 错误

使用 UITapGestureRecognizer 根据 iPhone 中的手指触摸位置添加新视图