我想让用户在 iPhone 屏幕上绘制签名,因此我添加了 UIView 的子类,并在其“touchesMoved”方法中添加了一些代码。


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    firstTouch = [touch locationInView:self];

    CGSize mySize = CGSizeMake(5, 5);
    UIGraphicsBeginImageContext(mySize);                                    
    CGContextRef ctx = UIGraphicsGetCurrentContext();                       

    CGContextBeginPath(ctx);                                                
    CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);                              
    CGContextAddRect(ctx, CGRectMake(0, 0, 5, 5));                          
    CGContextFillPath(ctx);                                                 

    UIImage *redRect = UIGraphicsGetImageFromCurrentImageContext();         
    UIGraphicsEndImageContext();                                            

    UIImageView *redRectView = [[UIImageView alloc] initWithImage:redRect]; 
    redRectView.center = CGPointMake(firstTouch.x, firstTouch.y);                               
    [self addSubview:redRectView];                                      

}

我用小矩形绘制它,结果它是一个点一个点的。因为太丑了,我想用线条画签名。但如何区分firstTouch和lastTouch呢?如果我只使用“touchesMoved”方法,我只能获得一个触摸点。

有帮助吗?

解决方案

根据 UIResponder 类参考, ,您还需要实施
– touchesBegan:withEvent:
– touchesEnded:withEvent:.
实现这些方法后,您应该能够获得足够的数据来实现路径贝塞尔曲线或其他合适的解决方案。

[编辑] 一个也许更好的解决方案是直接从 UIEvent 一旦你的控制器收到一个对象
– touchesMoved:withEvent:通知。另外, GLPaint 示例代码 也可能会有所帮助。

其他提示

作为GLPaint样本代码可以是对于初学者太复杂了,我发现此教程。这是简单易学的大多数初学者。

请与一个人的手指手写的签名将是一个比一个书写工具编写不同。您可能需要您使用的签名是什么,重新思考,因为你需要它是它是否具有约束力。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top