TextField问题:当应用程序进入前景时错误放置文本

时间:2015-03-06 17:16:34

标签: ios uitextfielddelegate

我的应用中的textField存在问题。如果用户开始输入数字,则离开应用程序,应用程序返回前景,不再显示该数字。但是,如果按下另一个数字,则会再次显示原始数字加上最近按下的数字。我尝试将委托设置为nil,将文本设置为viewDidDissappear中的nil,但这对问题没有影响。我错过了什么吗?

@interface SignIn : UIViewController <UITextFieldDelegate>

@property (strong, nonatomic) IBOutlet UITextField *numberField;

的.m

-(void)viewDidLoad{

 self.numberField.delegate = self;

}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{

if (textField == self.numberField) {
    [textField resignFirstResponder];
}
return YES;

}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if (_authFailedLabel.text != nil) {
    _authFailedLabel.text = nil;
  }
}

请忽略图像上的不良裁剪。 User types in number, then leaves app. App remains running in the background.

第1步:用户输入数字,然后离开应用。应用程序仍然在后台运行。

User re-enters the app and numbers are no longer visible in the textField

第2步:用户返回应用。数字不再可见。

enter image description here

步骤3:用户输入一个额外的数字并重新显示原始数字,但数字不再居中。

enter image description here

步骤4:用户输入另一个号码,所有号码都会从视图中消失,但会在另一个号码上重新出现。

1 个答案:

答案 0 :(得分:0)

对textFieldShouldReturn:

尝试返回NO而不是YES

此外:

if (_authFailedLabel.text != nil) {
    _authFailedLabel.text = nil;
  }

将清除该标签的文本(实际上是数字标签?不确定您提供的代码示例)

您可能希望执行更类似的操作,而不是将其设置为nil:

if (![_authFailedLabel.text isEqualToString:@""]) {
   _authFailedLabel.text = @"";
}

另外,尝试将其设置为@&#34; foo&#34; (或其他)代替,当你不想要它时,看看它是否已经清算。