gpt4 book ai didi

ios - 是否可以设置 UITextField deleage 并将其委托(delegate)设置为自身?

转载 作者:行者123 更新时间:2023-11-29 02:43:19 25 4
gpt4 key购买 nike

我正在尝试创建一个自包含的自定义 UITextField 类,其主要职责是将文本转换为 Tokens,就像 NSTokenField 的工作方式一样在 Mac OS X 上。这样,如果有人需要像文本字段这样的 token ,他们只需实例化 uitextfield 的实例并将其作为我的类的子类。

我的问题是关于委托(delegate)控制。

目标是当用户与我的自定义文本字段交互时,我正在尝试接收文本字段委托(delegate)方法。我如何在不将委托(delegate)传递给其他任何人的情况下执行此操作。

还是我必须观察通知?

这是我到目前为止所做的尝试创建一个独立的类:

//PKTokenTextField.h
@interface PKTokenTextField : UITextField<UITextFieldDelegate>


//PkTokenTextField.m

.m 文件中我有:

#import "PKTokenTextField.h"

@implementation PKTokenTextField

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code

[self commonSetup];
}
return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/

-(void)commonSetup{
self.delegate = self;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField{
NSLog(@"description field did become responder");
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSLog(@"LOL OF COURSE");
return YES;
}

@end

最佳答案

如果您愿意,您可以这样做。只要一个类符合 UITextFieldDelegate 协议(protocol),它就可以被设置为文本字段的委托(delegate),即使它是文本字段本身。

但是,这违背了委派的目的,即允许一个对象与另一个对象协调、更改并对另一个对象的更改使用react,同时最大限度地减少两者之间的耦合。

如果您可以通过子类化、组合或修改文本字段的属性来实现您正在寻找的效果,那么您应该这样做。 (请注意,您问题中的示例 NSTokenField 不需要覆盖委托(delegate)。)

另请参阅:TITokenField .

关于ios - 是否可以设置 UITextField deleage 并将其委托(delegate)设置为自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25466322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com