gpt4 book ai didi

ios - 如何将手势识别器添加到 uibezierpath 绘制的形状

转载 作者:可可西里 更新时间:2023-11-01 05:44:19 25 4
gpt4 key购买 nike

我在 UIView 子类的 drawRect 函数中画了一个圆

- (void)drawRect:(CGRect)rect
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 2.0);
CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0);
CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
CGRect circlePoint = (CGRectMake(self.bounds.size.width/3, self.bounds.size.height/2, 200.0, 200.0));

CGContextFillEllipseInRect(contextRef, circlePoint);
}

我想给圆圈添加一个手势识别器,让它可以点击

UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];

我想将 UIGestureRecognizer 拖到 View (在 Storyboard中)大圆圈所在的位置,但圆圈比 UIGestureRecognizer 小部件大得多。

如何组合代码或将 UIGestureRecognizer 分配给与圆的大小和位置完全相同的 View 区域?

最佳答案

简短的回答是你不能。手势识别器附加到 View ,而不是形状或图层。您必须为每个形状创建一个自定义 View 对象。你当然可以做到。

我建议您创建一个 UIView 的自定义子类来管理您的所有形状。 (我将其称为 ShapesView)让自定义 ShapesView 管理一组自定义形状对象。将手势识别器附加到您的 ShapesView。在响应手势的代码中,让它进行自定义点击测试以确定点击了哪个形状,并移动这些形状。

UIBezierPath 包含一个 containsPoint 方法,如果您为每个形状维护一条贝塞尔曲线路径,该方法允许您进行 HitTest 。

关于ios - 如何将手势识别器添加到 uibezierpath 绘制的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com