Ios 如何在Objective C中创建UITextField的自定义委托
我是iOS新手,在创建UITextField的自定义委托方面面临问题 我的代码是这样的 在CustomTableView中Ios 如何在Objective C中创建UITextField的自定义委托,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我是iOS新手,在创建UITextField的自定义委托方面面临问题 我的代码是这样的 在CustomTableView中 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { if([self.delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) { [self.delegate textFieldShouldEn
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
if([self.delegate respondsToSelector:@selector(textFieldShouldEndEditing:)])
{
[self.delegate textFieldShouldEndEditing:textField];
}
return YES;
}
视图控制器
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
return YES;
}
但此方法在ViewController中未得到调用。
谁能告诉我我做错了什么
提前谢谢 您不应该手动调用textField的委托方法,如
[self.delegate textField shouldendediting:textField]代码>
如果你想从另一个类调用你的委托方法,那么做一些不是由sdk
提供的方法
例如,使方法类似
- (BOOL)myTextFieldShouldEndEditing:(UITextField *)textField
{
return YES;
}
并通过您的self.delegate
从其他类调用此方法,并确保self.delegate
不是nil
,我的意思是它具有您的viewController
的对象 您需要创建一个自定义TextField类,并在该类中设置委托。像这样
.h文件
@interface CustomTextField : UITextField<UITextFieldDelegate>
@end
如何在viewcontroller中分配代理?我假设self.delegate=viewcontroller
,您能否检查它的'nil?Lion不能调用
应该是不应该调用
。因为用户可以手动调用委托方法,但这不是一个好主意。@inderkumarratore:是的!编辑答案。那是个打字错误!谢谢你的建议。:)@狮子没有接到电话。你们能不能再分享一些代码。@Lion不是问题:)我创建的类和你们说的一样,但并没有得到任何调用。
@implementation CustomTextField
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.delegate = self;
}
return self;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField{
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
return YES;
}
@end