Kyl*_*egg 11 delegates objective-c uitextfield ios
我想UITextField通过将其限制为四个字符来自定义a .我正在尝试了解代理如何工作Objective-C并已经完成以下步骤来实现此功能,仍然没有运气获得可行的解决方案.
1)创建了一个LimitedLengthTextField objective-c类.制作类型类UITextField并接受<UITextFieldDelegate>类型的对象.
LimitedLengthTextField.h:
@interface LimitedLengthTextField : UITextField <UITextFieldDelegate>
@end
Run Code Online (Sandbox Code Playgroud)
2)在LimitedLengthTextField.m中实现了以下方法:
@implementation LimitedLengthTextField
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 4) ? NO : YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
3)在我的CreateAccount类中导入"LimitedLengthTextField.h",并尝试按如下方式设置UITextField"ssnTextField"的委托viewDidLoad(我的app接受用户SSN的最后4位数字).
// Set the custom SSN textfield delegate
LimitedLengthTextField *custTextField = [[LimitedLengthTextField alloc] init];
[self.ssnTextField setDelegate:custTextField];
Run Code Online (Sandbox Code Playgroud)
基于我对Objective-C代表的有限理解,我现在创建了一个类,实现了我想要的委托方法,然后创建了该类的实例并将其分配给我的UITextView对象.我错过了什么?
use*_*234 20
你不应该有UITextField的子类.而是在CreateAccount类中实现回调.所以你应该有这样的事情:
@interface CreateAccount :UIViewController <UITextFieldDelegate>
// I use UIViewController but whatever your CreateAccount from.
Run Code Online (Sandbox Code Playgroud)
并在CreateAccount.m文件中实现:
这可能在你的viewDidLoad方法中:
Self.cusTextField.delegate = self;
Run Code Online (Sandbox Code Playgroud)
还有这个
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 4) ? NO : YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24889 次 |
| 最近记录: |