UITextField文本框

UITextField文本框

接收用户输入的内容

  • 属性:
    text获取或设置文本框中的文本
    UITextField *textField2 = [[UITextField alloc]init]; textField2.frame = CGRectMake(100, 250, 200, 40); textField2.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:textField2];

placeHolder提示性文字如:
self.textField1.placeholder = @"请输入用户名";
borderStyle(RoundedRect)边框样式

/*UITextBorderStyleNone,
    UITextBorderStyleLine,//黑线框
    UITextBorderStyleBezel,//黑线框 带阴影
    UITextBorderStyleRoundedRect圆角矩形*/
    self.textField1.borderStyle = UITextBorderStyleNone;

background(UIImage)背景图片
self.textField1.background = [UIImage imageNamed:@"BTN"];

  • 如何关闭键盘?
  1. 方法一:只要让文本框失去焦点即可。失去焦点也叫放弃第一响应者身份
    [text resignFirstResponder];
    2.方法二:如果界面中文本框过多,希望批量关闭所有文本框弹出的键盘。则设置文本框的父视图结束编辑状态即可
  • 键盘有关的操控:
    系统私下做的事:针对用户点击文本框的动作,系统提供了一个响应:即让文本框称为第一响应者,然后系统又弹出了键盘
    如果想关闭键盘,只需要让文本框放弃第一响应者身份即可
    成为第一响应者:[textField1 becomeFirstResponder],调用此方法的结果就是弹出键盘
    放弃第一响应者身份:[textField1 resignFirstResponder],调用此方法的结果就是收起键盘
    如果需要关闭的文本框的键盘较多,可以直接调用所有文本框的父视图的方法,结束编辑状态,则所有键盘都关闭[view endEditing:YES]
    //结束 textField1的第一响应者身份
    [self.textField1 resignFirstResponder];
    //结束 textField2的第一响应者身份
    //从self.view 取出 textField 这个子视图
    UITextField *tf2 = [self.view viewWithTag:100];
    [tf2 resignFirstResponder];
    //结束父视图的编辑状态 一旦结束了父视图的编辑状态,无论它里面的子视图无论谁在获取焦点,全部都取消
    [self.view endEditing:YES];
  • 关闭键盘时机
    i.点击某个控件
    ii.点击视图的任意处,实现控制器的touchesBegan方法
    iii.点击键盘的return键,需要设置文本框的代理
  • 练习有文本框两个如何按下return收起键盘
@interface MyViewController ()
@property(nonatomic,strong)UITextField *tf1;
@property(nonatomic,strong)UITextField *tf2;
@end
@implementation MyViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //如果编辑第一个 文本框 让 第二个文本框获取第一响应身份
     if(self.tf1.isFirstResponder)
   {
      [self.tf2 becomeFirstResponder];
       return;
   }
    //如果编辑第二个 文本框 让 第二个文本框获取第一响应身份
    if(self.tf2.isFirstResponder)
    {
        [self.tf2 becomeFirstResponder];
    }
}
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    self.tf1 = [[UITextField alloc]init];
    self.tf1.frame = CGRectMake(50, 200, 200, 50);
    self.tf1.placeholder = @"请输入用户名";
    //UIControlEventEditingDidEndOnExit 文件输入框点击return键的事件
    [self.tf1 addTarget:self action:@selector(textFieldClickReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];
    [self.view addSubview:self.tf1];
    self.tf2 = [[UITextField alloc]init];
    self.tf2.frame = CGRectMake(50, 300, 200, 50);
    self.tf2.placeholder = @"请输入用户名";
    [self.tf2 addTarget:self action:@selector(textFieldClickReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];
    [self.view addSubview:self.tf2];
}
//如果UIControlEventEditingDidEndOnExit 事件方法一旦实现,不用写任何代码键盘都会回收
-(void)textFieldClickReturn:(UITextField*)  sender{
    if(self.tf1 == sender)
    [self.tf2 becomeFirstResponder];
}
  • 由输入文本框内容点击return生成多个label
@interface MyViewController ()
@property(nonatomic,assign)NSInteger y;
@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.y = 20;
    self.view.backgroundColor = [UIColor whiteColor];
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(20, self.y, self.view.frame.size.width - 40, 40)];
    textField.placeholder = @"请输入内容";
    textField.borderStyle = UITextBorderStyleLine;
    //添加点击return事件方法
    [textField addTarget:self action:@selector(addLabel:) forControlEvents:UIControlEventEditingDidEndOnExit];
    
    [self.view addSubview:textField];
    self.y += textField.frame.size.height +20;
}
-(void)addLabel:(UITextField*) sender
{
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, self.y, self.view.frame.size.width, 40)];
    label.text = sender.text;
    label.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:label];
    self.y += label.frame.size.height +20;
    //清空输入框中内容
    sender.text = @"";
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272