Кажется недокументированными изменения в том, как протокол UITextFieldDelegate работает между iOS 4.3 и iOS 5.0, что нарушает мой код.
Просто воспроизвести следующим образом: Используя XCode 4.2, создайте проект 'Single View Application', который называетсятестовое задание.Использовать параметры по умолчанию (т. Е. Нет раскадровки, но да - ARC). Задайте цель развертывания 4.3 (чтобы мы могли запустить приложение как в 5.0, так и в 4.3)
Поместите этот код в заголовочный файл ViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property(nonatomic,strong) UITextField *textField1;
@property(nonatomic,strong) UITextField *textField2;
@property(nonatomic,strong) UILabel *resultsLabel;
@end
Поместите это в файл ViewController.m:
#import "ViewController.h"
@implementation ViewController
@synthesize textField1,textField2,resultsLabel;
- (void)viewDidLoad {
textField1=[[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)];
textField1.tag=1;
textField1.backgroundColor=[UIColor whiteColor];
textField1.delegate=self;
[self.view addSubview:textField1];
textField2=[[UITextField alloc] initWithFrame:CGRectMake(10, 50, 300, 30)];
textField2.tag=2;
textField2.backgroundColor=[UIColor whiteColor];
textField2.delegate=self;
[self.view addSubview:textField2];
resultsLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 90, 300, 30)];
resultsLabel.backgroundColor=[UIColor clearColor];
[self.view addSubview:resultsLabel];
[super viewDidLoad];
}
-(void)textFieldDidEndEditing:(UITextField *)textField {
switch (textField.tag) {
case 1:
// textField1
[textField2 becomeFirstResponder];
resultsLabel.text=@"Finished editing 1st box";
break;
case 2:
// textField2
resultsLabel.text=@"Finished editing 2nd box";
break;
}
}
@end
Запустите код в симуляторе, и он отобразит два белых поля UITextFields.Коснитесь первого, затем коснитесь второго.
Если запустить на iOS 4.3 на симуляторе, UILabel отобразит «Закончено редактирование 1-го окна». Если запустить на iOS 5.0 на симуляторе, UILabel отобразит «Завершено редактирование 2-го окна."
Я пытаюсь сделать так, чтобы при выходе из поля i вы автоматически переходили в поле (i + 1).Любые предложения относительно того, что не так, и как это исправить?Я не вижу никаких упоминаний в заметках о выпуске iOS 5 от Apple.