如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField
Posted
技术标签:
【中文标题】如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField【英文标题】:Don't recreate UITextField on Tap if UITextField is already created 【发布时间】:2014-08-08 09:58:17 【问题描述】:我有一些想法,但是对于第一次创建带有“if 条件”的 UITextField 来说当然不行。 我怎样才能做到这一点? 我可以设置“如果 UITextField 已经存在”这样的条件吗???
这是我的代码:
-(void)tapDetected:(UIGestureRecognizer*)recognizer
NSLog(@"tap detected.");
CGPoint point = [recognizer locationInView:self.truckImageView];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, point.y, 300, 40)];
[textField becomeFirstResponder];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:24];
textField.placeholder = @"enter text";
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
textField.delegate = self;
if (textField.text && textField.text.length > 0)
[self.view addSubview:textField];
// textField.alpha = 0.5;
[textField setBackgroundColor:[UIColor clearColor]];
else
NSLog(@"textField is already created.");
【问题讨论】:
【参考方案1】:当然。创建 UITextField 时,您可以分配一个标签:
textField.tag = 1001;
然后在再次创建之前,您可以检查
UITextField *txt = [self.view viewWithTag:1001];
if(txt.tag == 1001)
return;
【讨论】:
【参考方案2】:我会在头文件中声明一个 UITextField 如下
@property (strong, nonatomic) UITextField *textField;
然后在您的点击功能中测试 self.textField 是否为空:
if(self.texField == NULL)
//enter code
记得将代码中的所有textfield
替换为self.textfield
【讨论】:
以上是关于如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField的主要内容,如果未能解决你的问题,请参考以下文章
如何为 iOS 7 创建弹出式 uipicker 和 uitextfield?
如何启用/禁用 UITextField 的 inputAccessoryView 按钮?