zoukankan      html  css  js  c++  java
  • iOS密码框的实现方式

    说一下密码加密的实现方式
     
    效果图:
     
     
    CC05CAD0 C90F 46B8 9F5C 63B3FA27BB55
     
     
     
    实现方式:
     
    主要说一下密码框的实现,这个密码框中间的四个数字其实是4个 UITextField ,然后通过键盘删除键 和TextFiled 的协议shouldChangeCharactersInRange.来判断输入的位置,代码如下;
     
     
     
    直接上代码:
     
    //
    //  IDSGameRoomSecretView.h
    //
    //  Created by levi.duan on 2017/7/18.
    //  Copyright © 2017 Near. All rights reserved.
    //

    #import <UIKit/UIKit.h>
    #import
    "BaseViewController.h"

    typedefvoid(^handleInputPasswordBlock)(NSString *password);

    @interface IDSGameRoomSecretView : UIView

    - (
    instancetype)initWithPasswordCallBack:(handleInputPasswordBlock)passwordCallback;

    /**
     
    弹出说明视图
     */

    - (
    void)showInputSecretView;


    @end
     
     
     
     
     
     
    //
    //  IDSGameRoomSecretView.m
    //  Near
    //
    //  Created by levi.duan on 2017/7/18.
    //  Copyright © 2017 Near. All rights reserved.
    //

    #import "IDSGameRoomSecretView.h"
    #import
    "PZXVerificationTextField.h"


    @interfaceIDSGameRoomSecretView()<UIGestureRecognizerDelegate,UITextFieldDelegate,PZXTextFieldDelegate>

    @property (nonatomic,strong) UILabel *titleLabel;
    @property (nonatomic,strong) UILabel *subtitleLabel;
    @property (nonatomic,strong) UITextField *secretTextField;
    @property (nonatomic,strong) UIButton *gameRoomBtn;
    @property (nonatomic, strong) UIView *secretRoomView;
    @property (nonatomic, strong) NSMutableArray *textFieldArray;
    @property (nonatomic , copy) handleInputPasswordBlock onHandlePasswordCallBack;



    @end

    @implementation IDSGameRoomSecretView

    - (
    instancetype)initWithPasswordCallBack:(handleInputPasswordBlock)passwordCallback
    {
       
    if (self = [superinit]) {
           
    self.onHandlePasswordCallBack = passwordCallback;
        }
       
       
    returnself;
    }

    - (
    void)showInputSecretView
    {

       
    self.backgroundColor = [UIColorcolorWithRed:0green:0blue:0alpha:0.7];

        [[
    AppDelegatemainWindow] addSubview:self];
        [
    self.inputViewbecomeFirstResponder];
       
       
    self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
       
       
    UITapGestureRecognizer *selfRecognizer = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(removeView)];
       
    self.userInteractionEnabled = YES;
        [
    selfaddGestureRecognizer:selfRecognizer];
        selfRecognizer.
    delegate = self;
       
       
    self.secretRoomView = [[UIViewalloc] initWithFrame:CGRectMake(0, 0, 510/2, 380/2)];
       
    self.secretRoomView.centerY = SCREEN_HEIGHT/2;
       
    self.secretRoomView.centerX = SCREEN_WIDTH/2;
       
    self.secretRoomView.backgroundColor = [UIColorwhiteColor];
       
       
    self.secretRoomView.centerY = SCREEN_HEIGHT/2-50;
     
       

       
    _titleLabel = [[UILabelalloc] initWithFrame:CGRectMake(0, 50/2, 0, 0)];
       
    _titleLabel.text = @"房间已加锁";
       
    _titleLabel.textColor = NF_Color_C3;
       
    _titleLabel.font = [UIFontsystemFontOfSize:Near_Final_Font_T6];
        [
    _titleLabelsizeToFit];
       
    _titleLabel.centerX = self.secretRoomView.frame.size.width/2;
        [
    self.secretRoomViewaddSubview:_titleLabel];
       
       
    _subtitleLabel = [[UILabelalloc] initWithFrame:CGRectMake(0,CGRectGetMaxY(self.titleLabel.frame)+10, 0, 0)];
       
    _subtitleLabel.text = @"输入房间密码";
       
    _subtitleLabel.textColor = NF_Color_C10;
       
    _subtitleLabel.font = [UIFontsystemFontOfSize:Near_Final_Font_T9];
        [
    _subtitleLabelsizeToFit];
       
    _subtitleLabel.centerX = self.secretRoomView.frame.size.width/2;
        [
    self.secretRoomViewaddSubview:_subtitleLabel];
       
       
    self.textFieldArray = [NSMutableArrayarray];
       
    NSArray *views = [selfsubviews];
       
    for (UITextField *tf in views) {
            [tf
    removeFromSuperview];
        }
       
       
    for (int i=0;i<4;++i) {
           
    PZXVerificationTextField *tf = [[PZXVerificationTextFieldalloc] initWithFrame:CGRectMake(70/2+i*70/2+15*i, CGRectGetMaxY(self.subtitleLabel.frame)+15, 70/2, 70/2)];
            [tf
    setFont:[UIFontsystemFontOfSize:Near_Final_Font_T5]];
            [tf
    setTextColor:NF_Color_C4];
            tf.
    backgroundColor = [UIColorclearColor];
            tf.
    layer.borderWidth = 0.5;
            tf.
    layer.borderColor = NF_Color_C9.CGColor;
            tf.
    layer.cornerRadius = 5.f;
            tf.
    layer.masksToBounds = YES;
            tf.
    tintColor =[UIColorclearColor];
            tf.
    tag = 100+i;
            tf.
    keyboardType = UIKeyboardTypeNumberPad;
            tf.
    textAlignment = NSTextAlignmentCenter;
            tf.
    delegate = self;
            tf.
    pzx_delegate = self;
            [
    self.secretRoomViewaddSubview:tf];
            [
    self.textFieldArraycl_addObject:tf];
            [tf
    becomeFirstResponder];
        }
       
       
    self.gameRoomBtn = [[UIButtonalloc] initWithFrame:CGRectMake(0, 270/2, 228/2, 68/2)];
       
    self.gameRoomBtn.centerX = self.secretRoomView.frame.size.width/2;
       
        [
    self.gameRoomBtnsetTitle:@"确定"forState:UIControlStateNormal];
        [
    self.gameRoomBtn.titleLabelsetFont:[UIFontsystemFontOfSize:Near_Final_Font_T5]];
        [
    self.gameRoomBtn.titleLabelsetTextColor:NF_Color_C1];
       
    self.gameRoomBtn.backgroundColor = NF_Color_C27;
        [
    self.gameRoomBtnaddTarget:selfaction:@selector(interRoomVoid) forControlEvents:UIControlEventTouchUpInside];
       
    self.gameRoomBtn.layer.cornerRadius = 5.0f;
       
    self.gameRoomBtn.layer.masksToBounds = YES;
       
        [
    self.secretRoomViewaddSubview:self.gameRoomBtn];
       
        [
    selfaddSubview:self.secretRoomView];
       
       
    self.secretRoomView.layer.cornerRadius = 10.f;
       
    self.secretRoomView.layer.masksToBounds = YES;
       
       
    }

    #pragma mark - Public Methods

    /*
    - (void)showDalog
    {
        [[AppDelegate mainWindow] addSubview:self];
        [self.inputView becomeFirstResponder];
    }
     */


    - (
    void)removeView
    {
        [
    selfremoveFromSuperview];
    }

    -(
    BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
       
        textField.
    text = string;
       
       
    if (textField.text.length > 0) {//防止退格第一个的时候往后跳一格
           
           
    if (textField.tag<  [[_textFieldArraylastObject] tag]) {
               
               
    UITextField *newTF =  (UITextField *)[selfviewWithTag:textField.tag+1];
               
                [newTF
    becomeFirstResponder];
            }
        }
       
    returnNO;
    }

    //点击退格键的代理
    #pragma mark - PZXTextFieldDelegate
    -(void)PZXTextFieldDeleteBackward:(PZXVerificationTextField *)textField{
       
       
    if (textField.tag > [[_textFieldArrayfirstObject] tag]) {
           
           
    UITextField *newTF =  (UITextField *)[selfviewWithTag:textField.tag-1];
            newTF.
    text = @"";
            [newTF
    becomeFirstResponder];
        }
       
       
    }

    - (
    void)interRoomVoid
    {
        [
    selfgetVertificationCode];
    }

    -(
    void)getVertificationCode{ //获取验证码方法
       
       
    NSString *str = [NSStringstring];
       
       
    for (int i = 0; i<_textFieldArray.count; i++) {
            str = [str
    stringByAppendingString:[NSStringstringWithFormat:@"%@",(UITextField *)[_textFieldArray[i] text]]];
        }
       
    if (self.onHandlePasswordCallBack) {
           
    self.onHandlePasswordCallBack(str);
        }
        [
    selfremoveView];
    }


    -(
    void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
       
       
    for (UITextField *tf inself.textFieldArray) {
           
            [tf
    resignFirstResponder];
        }
    }



    - (
    BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
       
    if ([touch.viewisDescendantOfView:self.secretRoomView]) {
           
    returnNO;
        }
       
    returnYES;
    }


    @end
     
    //
    //  PZXVerificationTextField.h
    //  Near
    //
    //  Created by levi.duan on 2017/7/19.
    //  Copyright © 2017 Near. All rights reserved.
    //

    #import <UIKit/UIKit.h>

    @classPZXVerificationTextField;//class一下不然代理里面无法识别

    @protocol PZXTextFieldDelegate <NSObject>

    - (
    void)PZXTextFieldDeleteBackward:(PZXVerificationTextField *)textField;


    @end

    @interface PZXVerificationTextField : UITextField

    @property (nonatomic, assign)id<PZXTextFieldDelegate> pzx_delegate;

    @end
     
     
     
    //
    //  PZXVerificationTextField.m
    //  Near
    //
    //  Created by levi.duan on 2017/7/19.
    //  Copyright © 2017 Near. All rights reserved.
    //

    #import "PZXVerificationTextField.h"

    @implementation PZXVerificationTextField

    -(
    void)deleteBackward{
        [
    superdeleteBackward];
       
    if ([self.pzx_delegaterespondsToSelector:@selector(PZXTextFieldDeleteBackward:)]) {
           
            [
    self.pzx_delegatePZXTextFieldDeleteBackward:self];
        }
       
       
    }

    @end
     
  • 相关阅读:
    Linux的五个查找命令
    Linux中ftp不能上传文件/目录的解决办法
    linux下的chmod,chown和chgrp
    Memcache基础教程
    Web服务器磁盘满故障
    linux定时任务生产java服务无法执行问题案例
    Linux 用户和用户组管理
    10-xargs 简明笔记
    51-du 显示关于目录层次结构或文件磁盘使用情况的信息
    46-df 显示磁盘空间的使用情况
  • 原文地址:https://www.cnblogs.com/firstrate/p/7208530.html
Copyright © 2011-2022 走看看