• 多个相似的控件之间的便利与字符的拼接


    形如这样的输入会员卡卡好的,要求输入的数字一一对应

    1、 要定义的变量

    /// 临时变量
    @property(nonatomic , strong)UITextField * tempFiled;
    
    /// 标记
    @property (nonatomic ,assign) int  tempTag;
    
    /// 存储文本框
    @property (nonatomic, strong) NSMutableArray *textFieldArrayM;
    
    /// 临时文字是数组
    @property (nonatomic, copy) NSMutableArray *numberArrayM;
    
    /// 文本框的标记
    @property (nonatomic, assign) NSInteger numInField;
    
    /// 输入的卡号
    @property (nonatomic, strong) NSString * cardNumber;
    
    -(NSMutableArray *)numberArrayM
    {
        if (!_numberArrayM) {
            _numberArrayM = [NSMutableArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",nil];
        }
        return _numberArrayM;
    }
    
    -(NSMutableArray *)textFieldArrayM
    {
        if(!_textFieldArrayM)
        {
            _textFieldArrayM = [NSMutableArray array];
        }
        return _textFieldArrayM;
    }
    

     2、添加视图

    // 标题
        UILabel * topView = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.bgScrollView.width, kHeightOfTextField)];
        topView.backgroundColor = [UIColor colorWithRed:(157 / 255.0) green:( 157 / 255.0) blue:( 157 / 255.0) alpha:1.0];
        topView.textColor = [UIColor whiteColor];
        topView.textAlignment = NSTextAlignmentLeft;
        topView.text = @"   请输入您的会员卡号";
        topView.font = [UIFont systemFontOfSize:16];
        [self.bgScrollView addSubview:topView];
        
        UIImageView * cardNumImage = [[UIImageView alloc]initWithFrame:CGRectMake(kSpace, topView.bottom + kSpace, self.bgScrollView.width- (2*kSpace), kHeightOfTextField)];
        cardNumImage.image = [UIImage imageNamed:@"kahaobang"];
        cardNumImage.userInteractionEnabled = YES;
        [self.bgScrollView addSubview:cardNumImage];
        
        // 输入框
        for (int i = 0; i < kTextFiledNumber ; i ++) {
            
            CGFloat textFiledW = (self.bgScrollView.width- (2*kSpace))/10;
            UITextField * cardNumTextFiled = [[UITextField alloc]initWithFrame:CGRectMake(kSpace+(i * textFiledW), topView.bottom + kSpace, textFiledW, kHeightOfTextField)];
            cardNumTextFiled.borderStyle = UITextBorderStyleNone;
            cardNumTextFiled.textAlignment = NSTextAlignmentCenter;
            cardNumTextFiled.keyboardType =  UIKeyboardTypeNumberPad;
            cardNumTextFiled.delegate = self;
            cardNumTextFiled.tag = i;
              [self.textFieldArrayM addObject:cardNumTextFiled];
            [self.bgScrollView addSubview:cardNumTextFiled];
        }
       /// 第一响应者
        [[self.textFieldArrayM firstObject]becomeFirstResponder];
    
            // 确定按钮
        UIButton * sureButton = [UIButton buttonWithType:UIButtonTypeCustom];
        sureButton.frame = CGRectMake(kSpace, cardNumImage.bottom + (3*kSpace), self.bgScrollView.width - (2*kSpace), kHeightOfTextField);
        [sureButton setBackgroundImage:[UIImage imageNamed:@"log_red_bg"] forState:UIControlStateNormal];
        [sureButton setTitle:@"确定" forState:UIControlStateNormal];
        [sureButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        sureButton.titleLabel.font = [UIFont systemFontOfSize:16];
        [self.bgScrollView addSubview:sureButton];
        [sureButton addTarget:self action:@selector(sureClicked) forControlEvents:UIControlEventTouchUpInside];
    
    /**
     * @brief 点击确定按钮
     */
    
    -(void)sureClicked
    {
        if(self.numInField < kTextFiledNumber)
        {
            [[DMCAlertCenter defaultCenter] postAlertWithMessage:@"请输入完整..."];
            for (UITextField *textField in self.textFieldArrayM)
            {
                if([textField.text isEqualToString:@""])
                {
                    [textField becomeFirstResponder];
                    break;
                }
            }
        }
        else
        {
            NSMutableString *appendString = [NSMutableString string];
            for (NSString *string in self.numberArrayM) {
                [appendString appendString:string];
            }
            [[DMCAlertCenter defaultCenter] postAlertWithMessage:appendString];
    
        }
       
    }
    
    #pragma 代理方法
    -(void)textFieldDidBeginEditing:(UITextField *)textField
    {
        if (self.tempFiled == nil){
           [textField becomeFirstResponder];
            self.tempFiled = textField;
        }
        else if (self.tempFiled !=nil && self.tempFiled == textField){
            [self.tempFiled becomeFirstResponder];
            
        }
        else if (self.tempFiled!= textField && self.tempFiled!=nil){
            [textField becomeFirstResponder];
            self.tempFiled = textField;
        }
    }
    
    
    /**
     * @brief 文字改变,文本长度大于1就会自动跳转到下一个
     */
    
    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSString *allString = [textField.text stringByAppendingString:string];
        if(allString.length > 1)
        {
            textField.text = [allString substringToIndex:1];
            return NO;
        }
        if(![string isEqualToString:@""])
        {
            self.numInField++;
            [self.numberArrayM replaceObjectAtIndex:textField.tag withObject:string];
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                if(textField.tag < kTextFiledNumber)
                {
                    for (UITextField *textField in self.textFieldArrayM) {
                        if([textField.text isEqualToString:@""])
                        {
                            [textField becomeFirstResponder];
                            break;
                        }
                    }
                }
                if (self.numInField == kTextFiledNumber) {
                    [self.view endEditing:YES];
                }
            });
        }else
        {
            self.numInField--;
             [self.numberArrayM replaceObjectAtIndex:textField.tag withObject:@""];
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                if(textField.tag < kTextFiledNumber)
                    [self.textFieldArrayM[textField.tag] becomeFirstResponder];
            });
        }
        
        return YES;
    }
    
  • 相关阅读:
    自食其力!ASP.NET 4打造HTML5视频控件
    delphi 拖放操作http://topic.csdn.net/t/20030306/10/1497344.html?1026446129
    delphi开发的小技巧http://www.cto360.com/a/5000086716.shtml
    TThread 类 详细解析 (原帖 华夏黑客同盟)http://www.cppblog.com/Khan/archive/2006/11/21/15503.html
    delphi 多线程同步 互斥变量,信号量,事件对象。http://www.bianceng.cn/Programming/Delphi/200912/12689.htm
    如何利用socket进行HTTP访问http://blog.csdn.net/sanfengshou/archive/2011/03/07/6228250.aspx
    TCP, Scoket, HTTP
    Delphi开发嵌入式IE浏览器监控程序http://www.pasou.cn/edu/html/List3899_3.html
    Delphi实现网络蚂蚁和FlashGet的悬浮窗口,拖动
    delphi调用C#写的web服务例子(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);)
  • 原文地址:https://www.cnblogs.com/angongIT/p/4182367.html
Copyright © 2020-2023  润新知