而不是手动将每个TextField委托添加到UIView,如下所示:
self.txtName.delegate = self;
self.txtAge.delegate = self;
是否有更快捷的方法将所有TextField委托添加到UIView?
或者,有没有办法可以获得刚刚获得焦点的TextField的位置,而不使用UITextFieldDelegate?
答案 0 :(得分:3)
创建出口集合
@property(nonatomic, strong) IBOutletCollection(UITextField) NSArray *textFields;
然后遍历textFields
for(UITextField *aTextField in self.textFields)
{
aTextField.delegate = self;
}
上有关于IBOutlets的好文章
答案 1 :(得分:1)
for (UIView *aView in self.view.subviews) {
if ([aView isKindOfClass:[UITextField class]]) {
((UITextField *)aView).delegate = self;
}
}
答案 2 :(得分:0)
«两个或两个以上:使用一个» - Edsger W. Dijkstra
[@[self.txtNames, self.txtAge] enumerateObjectsUsingBlock:^(UITextField *tf, NSUInteger idx, BOOL *stop){
tf.delegate = self;
}];
好的:不是。但是原则相同。
如果要使用for
,可以使用快速枚举而不是基于块的枚举。
for (UITextField *tf in @[self.txtNames, self.txtAge]) {
tf.delegate = self;
}