美文网首页
iOS中 touch的相关开发

iOS中 touch的相关开发

作者: 7dfa9c18c1d1 | 来源:发表于2016-03-17 17:27 被阅读68次

    苹果手机支持指纹输入,所有在开发过程的小伙伴们肯定碰到过 用touch代替输入密码的情况。今天在这写些关于touch的iOS开发,请大婶们指教

    iOS中关于touch开发,需要导入两个系统头文件

    #import <LocalAuthentication/LocalAuthentication.h>
    
    • 1、首先检查设备是否支持touch
    - (BOOL)checkTouchID
    {
        //初始化上下文对象
        LAContext * context = [[LAContext alloc] init];
        //检查设备是否支持touch
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) {
            // 支持
            return YES;
        }else{
            //不支持指纹识别
            return NO;
        }
    }
    
    • 2、支持的话,请用户输入touch指纹
    - (void)checkTouchID
    {
        //初始化上下文对象
        LAContext * context = [[LAContext alloc] init];
        //检查设备是否支持touch
        if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) {
            //不支持touch,直接返回
            return;
        }
        
        //指纹验证
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"touch" reply:^(BOOL success, NSError *error) {
            if (success) {
                //验证成功,主线程处理UI
                
            }else{
                switch (error.code) {
                    case LAErrorSystemCancel:{
                        //切换到其他APP,系统取消验证Touch ID
                        break;
                    }
                    case LAErrorUserCancel:{
                        //用户取消验证Touch ID
                        break;
                    }
                    case LAErrorUserFallback:{
                         //用户选择输入密码,切换主线程处理
                        dispatch_async(dispatch_get_main_queue(), ^{
                            // 主线程处理UI
                        });
                        break;
                    }
                    default:
                        break;
                }
            }
        }];
    }
    
    • 3、处理完毕后,笔者用block把值传回了控制器,下面是.m文件中的代码
    - (void)isSupportTouch:(touchBlock)block
    {
        //初始化上下文对象
        LAContext * context = [[LAContext alloc] init];
        //检查设备是否支持touch
        if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) {
            //不支持touch,直接返回
            block(NO, @"设备不支持touch");
            return;
        }
        
        //指纹验证
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"touch" reply:^(BOOL success, NSError *error) {
            if (success) {
                //验证成功,主线程处理UI
                block(YES, @"验证成功");
            }else{
                switch (error.code) {
                    case LAErrorSystemCancel:{
                        // 切换到其他APP,系统取消验证Touch ID
                        block(NO, @"系统取消验证Touch ID");
                        break;
                    }
                    case LAErrorUserCancel:{
                        //用户取消验证Touch ID
                        block(NO, @"用户取消验证Touch ID");
                        break;
                    }
                    case LAErrorUserFallback:{
                         //用户选择输入密码,切换主线程处理
                        dispatch_async(dispatch_get_main_queue(), ^{
                            // 主线程处理UI
                            block(NO, @"用户选择输入密码");
                        });
                        break;
                    }
                    default:{
                        block(NO, @"其他未知情况");
                    }
                        break;
                }
            }
        }];
    }
    
    • 4、控制器中代码和打印结果


      block传回给VC的值.png
    • 5、如果还有什么后续操作,就在回调中继续写吧

    PS:自恋的贴出
    [github地址][1]
    [1]: https://github.com/liyang123/LYTouchDemo.git

    相关文章

      网友评论

          本文标题:iOS中 touch的相关开发

          本文链接:https://www.haomeiwen.com/subject/nisclttx.html