测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | BSD |
发布最新发布 | 2017年1月 |
由 Mike Critchley 维护。
限制文本输入到定义的输出宽度,考虑到表情符和特殊输入语言,如日文或中文。
此仓库是一个 Objective-C Xcode 项目,包含类文件,您可以用来演示输入字段。尝试一下吧!
MPC_CharacterLimitedTextField 是 UITextField 的子类,允许用户只输入指定输出宽度内的字符。如果您要输入名称、简短描述等将在宽度有限的标签中显示的内容,此类很有用。例如,您可能需要在一个视图中输入一个字符串,该字符串将被展示在具有有限水平空间的 UITableViewCell 中。此类允许您指定显示标签的确切水平宽度,以及预期的输出字体和大小,并执行其余操作。
此文本框不是基于字符数,它会在表情符、其他语言(不是所有语言的宽度都相同)以及需要两步输入过程的语言(如日文)中失效。此类完全基于长度,因此它允许在您的视图控制器中输入任意类型的字符,直到达到您指定的输出长度。
使用 callbackIsImmediate 标志,您可以为每个输入字符接收委托回调。如果设置为 NO,则类将在用户点击键盘的返回键时将最终字符串返回给委托。
在当前仓库(或从下载/克隆的仓库)中找到并复制 MPC_CharacterLimitedTextField.h 和 .m 文件。
将 .h 文件导入具有目标 UITextField 的 IBOutlet 的类中。
在 Storyboard > Identity Inspector > Custom Class 中,从下拉列表中选择 MPC_CharacterLimitedTextField 类。
使用 Storyboard 从您的视图控制器创建一个 IBOutlet。
为了获取委托回调,添加委托协议。例如:@interface ViewController ()<MPC_CharacterDelimitedTextFieldDelegate>
在 viewDidLoad 中设置委托:self.inputTextField.MPC_TextFieldDelegate = self;
在 viewDidLoad 中,告诉类您的输出标签的最大宽度,并给出您将使用的字体和大小。例如,指定输出标签宽度为 180 点,系统字体大小为 14,中等粗细。
[self.inputTextField outPutTextFitToLabelWithWidth:180 fontWithSize:[UIFont systemFontOfSize14 weight:UIFontWeightMedium]];
使用 self.inputTextField.callbackIsImmediate = YES; 以便在每次按下字符时都获得回调。设置为 NO 仅在用户按下键盘上的 "return" 键(或放弃第一个响应者)时获取回调;
实现委托方法(见下文)
MPC_CharacterDelimitedTextFieldDelegate有四个回调方法。只需要实现其中一个。
@required
@optional
可选方法用于通知您主要事件。MPC_InputDidExceedTextField当用户尝试输入超出最大长度的文本时,可能会很有用。
添加本类的属性。@property (weak, nonatomic) IBOutlet UITextField *textField; //您的现有文本字段 @property (strong, nonatomic) MPC_CharacterDelimitedTextField *MPC_textField;
在 Storyboard > Identity Inspector > Custom Class 中,从下拉列表中选择 MPC_CharacterLimitedTextField 类。
若要将此类附加到现有的UITextField,如果创建了一个名为 MPC_textField 的 MPC_CharacterLimitedTextField 属性(例如),则可以使用它将现有的 UITextField 转换为:self.MPC_textField = (MPC_CharacterLimitedTextField *)self.textField;
希望您觉得这个类很有用!