iOS中 touch的相关开发

苹果手机支持指纹输入,所有在开发过程的小伙伴们肯定碰到过 用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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容