Ios 如何在Objective C中创建UITextField的自定义委托

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

我是iOS新手,在创建UITextField的自定义委托方面面临问题

我的代码是这样的

在CustomTableView中

- (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