UI: 使用 UITextField 接收用户文本输入
2014-10-13 14:30
465 查看
代码:
1.简单地添加了一个textField
borderStyle:这个属性属于 UITextBorderStyle 类型,它能指定文本视图如何显示他的边框。
ContentVerticalAlignment:这个属性属于 UIControlContenVerticalAlignment 类型,它会告诉文本视图如何垂直显示 文本。假如我们不设置文本在文本视图里纵向居中,它将会默认显示在文本视图的左上角。
2.
一个文本视图会发送一个委托信息给它的委托对象。当用户开始在文本视图里编辑文本,完成编辑,在文本视图里输入任何符号时,都会触发相关的代理。为了获得相关事件的通知,我们需要给对象设置文本视图的 delegate 属性。这个文本视图的委托必须遵守UITextFieldDelegate 协议,此协议的方法有:
textFieldShouldBeginEditing:
这个方法返回一个 BOOL 值,告诉文本视图用户是否开始编辑了。如果你不希望用户进行编辑,则返回 NO.当用户 tap 文本视图时,会触发这个方法(假设文本视图允许编辑).
textFieldDidBeginEditing:
当用户开始编辑文本视图时这个方法将会被调用。当用户 tap 文本视图并且
textFieldShouldBeginEditing:方法返回 YES(允许用户编辑文本内容)时会调用这个方法。
textFieldShouldEndEditing:
这个方法返回一个 BOOL 值,它将告诉文本视图是否结束当前的编辑任务。当用户离
开文本视图或者将第一响应者(first responder)切换到别的输入框时会调用这个方法。假如这
个方法返回 NO,用户将不能切换到别的输入框中,并且键盘也会显示在屏幕中。
textFieldDidEndEditing:
当文本视图的编辑任务终止时将会调用这个方法。当用户决定编辑别的输入框或利用一
个按钮将键盘隐藏起来时,会调用这个方法。
textField:shouldChangCharacterInRange:replacementString:
任何时候文本视图里的文本被修改都会调动这个方法。方法返回的是一个布尔值。假如
返回 YES,说明允许修改文本。如果返回 NO,文本视图中的文本不会被修改。
textFieldShouldClear:
每个文本视图都有一个 Clear 按钮,通常是一个圆形 X 按钮。当用户按下这个按钮时,
文本视图里的内容将会自动清除。但是我们需要人工启动清除按钮。如果已经启动了清除按
钮并返回 NO 方法,它将会让用户感觉程序没有正常工作。所以想清楚你在做什么,因为当
用户按下这个按钮时,发现文本内容没有被清除,这是很差的用户体验。
textFieldShouldReturn:
当用户在键盘上按下 Return 或 Enter 键时将会调用这个方法,或者隐藏键盘时也会调用
这个方法。在这个方法中,你应该将文本视图设置为第一响应者。
3.其他属性方法:
placeholders :占位符
文本视图有两个相对的属性,它们分别是 leftView 和 rightView。
如图
1.简单地添加了一个textField
CGRect textFieldFrame = CGRectMake(0, 0, 200, 31); _myTextField = [[UITextField alloc]initWithFrame:textFieldFrame]; _myTextField.borderStyle = UITextBorderStyleRoundedRect; _myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; _myTextField.text = @"fafafa"; _myTextField.center = self.view.center; [self.view addSubview:_myTextField];
borderStyle:这个属性属于 UITextBorderStyle 类型,它能指定文本视图如何显示他的边框。
ContentVerticalAlignment:这个属性属于 UIControlContenVerticalAlignment 类型,它会告诉文本视图如何垂直显示 文本。假如我们不设置文本在文本视图里纵向居中,它将会默认显示在文本视图的左上角。
2.
一个文本视图会发送一个委托信息给它的委托对象。当用户开始在文本视图里编辑文本,完成编辑,在文本视图里输入任何符号时,都会触发相关的代理。为了获得相关事件的通知,我们需要给对象设置文本视图的 delegate 属性。这个文本视图的委托必须遵守UITextFieldDelegate 协议,此协议的方法有:
textFieldShouldBeginEditing:
这个方法返回一个 BOOL 值,告诉文本视图用户是否开始编辑了。如果你不希望用户进行编辑,则返回 NO.当用户 tap 文本视图时,会触发这个方法(假设文本视图允许编辑).
textFieldDidBeginEditing:
当用户开始编辑文本视图时这个方法将会被调用。当用户 tap 文本视图并且
textFieldShouldBeginEditing:方法返回 YES(允许用户编辑文本内容)时会调用这个方法。
textFieldShouldEndEditing:
这个方法返回一个 BOOL 值,它将告诉文本视图是否结束当前的编辑任务。当用户离
开文本视图或者将第一响应者(first responder)切换到别的输入框时会调用这个方法。假如这
个方法返回 NO,用户将不能切换到别的输入框中,并且键盘也会显示在屏幕中。
textFieldDidEndEditing:
当文本视图的编辑任务终止时将会调用这个方法。当用户决定编辑别的输入框或利用一
个按钮将键盘隐藏起来时,会调用这个方法。
textField:shouldChangCharacterInRange:replacementString:
任何时候文本视图里的文本被修改都会调动这个方法。方法返回的是一个布尔值。假如
返回 YES,说明允许修改文本。如果返回 NO,文本视图中的文本不会被修改。
textFieldShouldClear:
每个文本视图都有一个 Clear 按钮,通常是一个圆形 X 按钮。当用户按下这个按钮时,
文本视图里的内容将会自动清除。但是我们需要人工启动清除按钮。如果已经启动了清除按
钮并返回 NO 方法,它将会让用户感觉程序没有正常工作。所以想清楚你在做什么,因为当
用户按下这个按钮时,发现文本内容没有被清除,这是很差的用户体验。
textFieldShouldReturn:
当用户在键盘上按下 Return 或 Enter 键时将会调用这个方法,或者隐藏键盘时也会调用
这个方法。在这个方法中,你应该将文本视图设置为第一响应者。
3.其他属性方法:
placeholders :占位符
文本视图有两个相对的属性,它们分别是 leftView 和 rightView。
//假如你要显示一 个货币文本视图,此时你想在左视图里用 UILabel 显示用户当前国家的货币。currency ['kʌr(ə)nsɪ]货币 Symbol符号 UILabel *currencyLabel = [[UILabel alloc]initWithFrame:CGRectZero]; currencyLabel.text = [[[NSNumberFormatter alloc]init]currencySymbol]; currencyLabel.font = _myTextField.font; [currencyLabel sizeToFit]; _myTextField.leftView = currencyLabel; _myTextField.leftViewMode = UITextFieldViewModeAlways;
如图
相关文章推荐
- [Wix] 在UI中使用text限制用户输入数字(ID)
- Xcode9学习笔记27 - 文本输入框控件的使用UITextField
- iOS学习总结之UI框架UI之文本输入控件( UITextField)
- 使用kbhit()和getch()无阻塞接收用户键盘输入
- Python使用tkinter库实现文本显示用户输入功能示例
- Xamarin iOS教程之使用按钮接接收用户输入
- 使用递归实现接收用户输入的正整数,输出该数的阶乘
- iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入
- iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入
- Xamarin iOS教程之使用按钮接接收用户输入
- Xamarin iOS教程之使用按钮接接收用户输入
- 由“登录”开始——使用领域对象接收用户输入
- 如何禁止用户在文本输入框中输入数字
- 使用PhoneNumberValidator判断用户输入的电话格式,并用PhoneFormatter对电话号码格式化。
- CMD命令行接收用户输入信息
- 做个基类使用,主要功能是子类的用户输入控件可以自动变色---Delphi
- Atlas学习手记(26):使用Validators验证用户输入
- 写一个控制台应用程序,它接收用户输入的字符串,将其中的字符顺序,反顺序输出!
- 使用Javascript评估用户输入密码的强度
- 使用JSP标签库验证用户的输入(2)完