如何在 UITextField 子类中设置 UITextField 的属性
Posted
技术标签:
【中文标题】如何在 UITextField 子类中设置 UITextField 的属性【英文标题】:How to set property of UITextField at UITextField subclass 【发布时间】:2014-04-19 08:21:08 【问题描述】:我有UITextField
的这个子类,我想将属性设置为UITextField
的背景颜色、边框等。我不知道,如果我使用正确的方法,因为当我将这个类用于UItextField
时,UITextField
不会改变。我必须在哪种方法中声明这个属性?
#import "defaultUITextField.h"
@implementation defaultUITextField
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
self.delegate = self;
[self setBackgroundColor:([UIColor redColor])];
UIColor *borderColor = [UIColor colorWithRed:233.0/255.0 green:233.0/255.0 blue:233.0/255.0 alpha:233.0/255.0];
self.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
self.leftViewMode = UITextFieldViewModeAlways;
self.layer.borderColor = [borderColor CGColor];
self.layer.borderWidth = 1.0f;
return self;
@end
【问题讨论】:
【参考方案1】:您的解决方案似乎是正确的。 你是如何将你的最终文本字段放在视图上的? 如果您在 Interface Builder 中创建了 TextField,那么您覆盖了错误的构造函数。
- (id)initWithCoder:(NSCoder *)inCoder
if (self = [super initWithCoder:inCoder])
self.delegate = self;
[self setBackgroundColor:([UIColor redColor])];
UIColor *borderColor = [UIColor colorWithRed:233.0/255.0 green:233.0/255.0 blue:233.0/255.0 alpha:233.0/255.0];
self.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
self.leftViewMode = UITextFieldViewModeAlways;
self.layer.borderColor = [borderColor CGColor];
self.layer.borderWidth = 1.0f;
return self;
当您在 IB 中创建 UITextField 并将其类更改为 UItextField 时,将调用此构造函数。
【讨论】:
我在 Storyboard 上有 UIExfield,它通过 IBOutlet 与 View 连接,IBOutlet 有一个 defaultUITextField 类,但它不起作用。只有当我在情节提要上设置课程时,您的方法才有效。不知道是不是很清楚。但我必须使用方法 initWithCoder 并在 storyBoard 上设置 defaultUITextField 类。这有点奇怪。为什么它只在视图中声明后才起作用:@property (strong, nonatomic) IBOutlet defaultUITextField *classNameTextField; 为了使控件成为自定义类,您需要直接在故事板中设置该类,因为故事板负责创建该控件的实例。如果你有 UITextField * tf = [[UITextField alloc]init]; tf - UITextField 类的实例。默认文本字段 * dtf = tf;现在 dtf 和 tf 是 UITextField 类的同一个对象。保存指向另一个变量的指针不会改变它的类。事实上,对象的类在创建后是不可能改变的。以上是关于如何在 UITextField 子类中设置 UITextField 的属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 的单独类中设置 UITextField 的委托?
如何在一个 UITextField 中设置两个不同的 NSUserDefaults
如何在 UITextField 中设置 placeHolder / 用户文本和左边框之间的距离