iOS- UITextField限制输入长度

限制输入长度的问题,在这里完美的解决了!

//先创建一个textField 和 一个button。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

#import "ViewController.h"

@interface ViewController ()<UITextFieldDelegate> {

    

    UITextField *currentTextFeild;

    UIButton    *touchButton;

}

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    UITextField *textFields = [[UITextField alloc] initWithFrame:CGRectMake(15, 50, self.view.bounds.size.width-15*2, 40)];

    textFields.backgroundColor = [UIColor brownColor];

    textFields.layer.cornerRadius = 5;

    textFields.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 40)];

    textFields.leftViewMode = UITextFieldViewModeAlways;//这两行是为了不让Text太贴textField的左边

    textFields.placeholder = @"请输入手机号";

    textFields.delegate = self;

    [self.view addSubview:textFields];

    currentTextFeild = textFields;

    

    UIButton *enableButton = [UIButton buttonWithType:UIButtonTypeCustom];

    enableButton.frame = CGRectMake(15, 100, self.view.bounds.size.width-15*2, 40);

    enableButton.layer.cornerRadius = 5;

    enableButton.backgroundColor = [UIColor grayColor];

    [enableButton setTitle:@"没内容不可点击" forState:UIControlStateNormal];

    [enableButton setTitle:@"可以按了" forState:UIControlStateSelected];

    [enableButton setTitle:@"按下去了" forState:UIControlStateHighlighted];

    enableButton.enabled = NO;

    [enableButton addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:enableButton];

    touchButton = enableButton;

}

- (void)btnClick {

    

    

}

//设置textField代理


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

#pragma mark -  UITextFieldDelegate

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

    

    return YES;

}

- (void)textFieldDidEndEditing:(UITextField *)textField {

    

    

}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    

    //用来判断是否可以继续输入, - range.length是为了判断是否可以删除

    NSInteger currentLength = textField.text.length - range.length + string.length;

    if (currentLength > 11) {

        

        return NO;

    }

    

    //判断按钮是否可以enable = YES

    if (currentTextFeild.text && currentTextFeild.text.length > 0 && currentLength > 0) {

        

        touchButton.enabled = YES;

        touchButton.selected = YES;

    }else {

        

        touchButton.enabled = NO;

        touchButton.selected = NO;

    }

    

    if (currentLength <= 0) {

        

        touchButton.enabled = NO;

        touchButton.selected = NO;

    }

    

    return YES;

}

- (BOOL)textFieldShouldClear:(UITextField *)textField {

    

    if (currentTextFeild.tag == 11 || currentTextFeild.tag == 12) {

        //手机号

        touchButton.enabled = NO;

        touchButton.selected = NO;;

    }

    

    return YES;

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    

    [textField resignFirstResponder];

    

    return YES;

}

只要有基础的,差不多都能看明白。。。

时间: 2024-10-09 04:52:33

iOS- UITextField限制输入长度的相关文章

iOS限制文本输入长度进阶之 一

/** * 本文以UITextField 最大文本长度=10为例 */ 首先想到的自然是delegate中的方法@selector(textField:shouldChangeCharactersInRange:replacementString:) 1.- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)stri

如何更好地限制一个UITextField的输入长度

要限制一个UITextField的输入字数(参考链接),首先想到的应该是通过 UITextFieldDelegate 的代理方法来限制: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; return NO to not change text 比如要设置字数限制为20: - (BOOL)text

iOS UITextField限制输入数字

有时候项目中要求文本框中只能输入数字,如:价格.公里数.费用等等,一般的文本框不限制输入的格式,这时候只能强制限制输入框的输入格式了,代码如下: #import "ViewController.h" @interface ViewController ()<UITextFieldDelegate>{         UITextField *numTextField;} @end @implementation ViewController - (void)viewDidL

iOS UITextField完成输入后关闭键盘的方法总结

// //  ViewController.swift //  UITextField完成输入后关闭键盘的方法 // //  Created by 悦兑科技 on 15/1/19. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController,UITextFieldDelegate { var textF = UITextField() overri

UITextField限制输入长度

首先,汉字的输入时的联想词在输入到TextFiled时,并不会走 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 这导致了在这里进行长度限制的代码都会失效.此路不通. 因此我们可以用注册UITextFieldTextDidChangeNotification通知来监测TextField的文字的变

iOS限制文本输入长度进阶之 二

想在最后还能输入中文? 当然得找到,输入了拼音还没选择汉字的标记啦! 什么?你疑惑会没有标记? 的确我也有过这样的疑惑,因为找遍了UITextField,完全是没有头绪的 UITextField里没有,肯定就要找和它关联的啦 好了,不和你绕圈子了,直接揭晓 UITextField的UITextInput协议中有这么一个属性markedTextRange @property (nonatomic, readonly) UITextRange *markedTextRange;          

iOS UITextField限制输入字数

关于iOS的文本框有时需要限制字数,如手机号,在UITextField的代理单纯写一个判断,在字数超过限制时,这时再想删除就删除不掉,可以在代理这样写,就解决 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (!string.length) { return YES; } if (tex

如何限制一个UITextField的输入长度

给UITextField增加监听 [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 实现监听方法 - (void)textFieldDidChange:(UITextField *)textField { if (textField == self.titleField) { if (textField.text.lengt

简单几步实现 IOS UITextField输入长度的控制

在ios开发过程中,我们有时候需要对UITextField的输入长度进行控制,比如输入手机号码最大长度为11位等,而ios自身又不像android那样可以设置输入框的输入长度,接下来通过简单几步实现这个功能: 1.新建一个类继续UITextField比如这个类叫MyUITextField 2.声明一个变量用来记录输入的最大长度 3.添加一个事件用于监听输入框输入值的变化 4.通过判断当前text字符串的长度是否大于最大长度来截取字符串并赋值給当前text保证text字符串的值始为指指定的最大长度

限制 UITextField 输入长度

限制 UITextField 输入长度 标签(空格分隔): UITextField UITextField 是 iOS 中最常用的组件之一.关于它也有各种各样的需求,这些需求是它本身没有提供相应的API的.限制输入框文本长度是常见的需求,UITextField 本身也并没有为此提供API.本文尝试给其加入这个功能. 1.通过 delegate 来实现 限制 UITextField 的输入字数,首先想到的是 UITextFieldDelegate,通过实现这个协议来实现需求: - (BOOL)te