2015-03-06 3 views
0

У меня проблема с textField в моем приложении. Если пользователь начинает вводить число, то приложение покидает приложение, и приложение возвращается на передний план, номер больше не отображается. Однако, если нажата другая цифра, снова появляются исходные номера плюс последний нажатый номер. Я попытался установить делегат на нуль, а текст на nil в viewDidDissappear, но это не повлияло на проблему. Я что-то упускаю?TextField Проблема: неправильный перевод текста, когда приложение переходит на передний план

@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: Типы пользователей другой номер и все номера исчезают из поля зрения, но вновь появятся на другую придачу.

ответ

0

Попробуйте возвращение NO вместо YES для textFieldShouldReturn:

также:

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

уберет текст этого лейбла (в том, что на самом деле на этикетке номер не уверен с образцом кода, которую вы предоставили?)

Вместо того, чтобы установить его в ноль, вы можете захотеть сделать что-то больше, как это:

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

Кроме того, попробуйте настроить его на @ "foo" (или что-то еще), чтобы увидеть, очищает ли он, когда вы этого не хотите.

+0

@jeffery Извините, я должен был быть более ясным. AuthFailedLabel - это метка под текстовым полем, которая отображает строку на основе сетевого ответа. Я только добавил эти методы b/c, они являются единственными методами делегирования текстового поля. – DaveLass

+0

можете ли вы опубликовать весь файл класса? Я не вижу, что будет причиной проблемы иначе ... –