如何在iOS应用程序中捕获用户的手写签名

时间:2014-01-20 18:52:39

标签: objective-c ios7

在我的应用中,用户将向客户请求数字化的手写签名。

我需要能够在用户在触摸屏上“写入”时捕获签名。我还需要存储数字化签名的图像以备将来使用。

我需要帮助或指针才能使我的应用程序具有数字签名?

3 个答案:

答案 0 :(得分:16)

由于您真的在谈论在iOS设备上录制用户的“模拟”签名,所以您需要做的就是在用户围绕视图移动手指或手写笔时创建图像。网上有很多教程可以说明(这里是one from Ray Wenderlich's site)。

基本思想是在跟踪视图中的触摸时通过添加点来构建路径。用户完成后,您可以保存生成的图像本身,或只保存路径。因此,您可能会创建一个名为UIView的{​​{1}}子类,并且您将实现与触摸相关的响应方法SignatureView-touchesBegan:withEvent:,{{1 }和-touchesMoved:withEvent:。触摸开始时,您将创建一个新的贝塞尔曲线路径。每次触摸移动时,向该路径添加一个点。触摸结束时,将新路径添加到视图记录的路径列表中。您可能还希望通过清除路径列表来删除视图的方法,以及用于绘制路径的-touchesEnded:withEvent:方法以及视图控制器检索路径或图像的某种方式。

此外,不用说,您需要非常小心使用用户的签名。避免存储签名的未加密图像,也许避免将签名存储在设备上。您可以将签名发送到可能更容易保护的服务器。

答案 1 :(得分:12)

我猜这些以下链接可以帮到你! 无论如何,当我在互联网上寻找相同的目的时,我找到了那些! 希望这对我们所有人都有用!

以下链接涉及相同的资源: 在iOS设备上捕获手写签名。

  1. https://www.altamiracorp.com/blog/employee-posts/capture-a-signature-on-ios
  2. https://github.com/jharwig/PPSSignatureView
  3. http://java.dzone.com/articles/capture-signature-ios
  4. http://www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit
  5. 注意:
    截至今天(2015年11月13日),我注意到上面提供的第一个链接(altamiracorp.com)由于某些未知原因而无法提供,可能是他们放下了他们的网站。所以我想公开分享我在EverNote中保存的一份副本,因为它有一些明智的教育价值理论。 So please kindly access it here

    猜猜这个答案对你有帮助! :(Y)

答案 2 :(得分:6)

请使用苹果研究套件http://www.apple.com/in/researchkit/

查看更多详情:

https://github.com/researchkit/researchkit

ViewController.h

    #import <UIKit/UIKit.h>
    #import <ResearchKit.h>

    @interface ViewController : UIViewController<ORKTaskViewControllerDelegate> // Delegate

    @property (strong, nonatomic) IBOutlet UIImageView *signImageview;
    @property (nonatomic, strong, readonly) ORKConsentDocument *consentDocument;
    @property (nonatomic, strong, readonly) ORKConsentSignature *signature;

ViewController.m

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.

        _consentDocument = [[ORKConsentDocument alloc] init];
        _signature = [[ORKConsentSignature alloc] init];
        ORKConsentReviewStep *signatureStep = [[ORKConsentReviewStep alloc] initWithIdentifier:@"sign" signature:_signature inDocument:_consentDocument];

        ORKOrderedTask *task =
        [[ORKOrderedTask alloc] initWithIdentifier:@"task" steps:@[signatureStep]];

        ORKTaskViewController *taskViewController =  [[ORKTaskViewController alloc] initWithTask:task taskRunUUID:nil];
        taskViewController.delegate = self;
        [self presentViewController:taskViewController animated:YES completion:nil];
    }

    #pragma mark - ORKTaskViewController delegate method

    - (void)taskViewController:(ORKTaskViewController *)taskViewController
           didFinishWithReason:(ORKTaskViewControllerFinishReason)reason
                         error:(NSError *)error {

        ORKConsentDocument *documentCopy = [_consentDocument copy];

        ORKConsentSignatureResult *signatureResult =
        (ORKConsentSignatureResult *)[[[taskViewController result] stepResultForStepIdentifier:@"sign"] firstResult];
        [signatureResult applyToDocument:documentCopy];

        self.signImageview.image = signatureResult.signature.signatureImage;

        // Then, dismiss the task view controller.
        [self dismissViewControllerAnimated:YES completion:nil];
    }