0

私のアプリでは、IB を使用していくつかのテキスト フィールドを作成しました。xib ファイルはもともと xcode 4 で作成され、現在は Xcode 5 に更新されています。問題は、アプリ全体のランダムなテキスト フィールドに間違ったフォントでテキストが表示されていることです。IBまたはプログラムでフォントが設定されていることに違いはないようです。

不思議なことに、シミュレーターで実行中にビュー コントローラーをポップしてプッシュすると、フォントが正しく表示されることがありますか?

私が知っているすべてのフォントを設定しようとしましたが、違いはありません。実際のiOS7デバイスには表示されないシミュレーターのiOS7の問題としか思えません。他の誰かがこれを見たことがありますか?ありがとう。

xib ファイルの textField を削除して置き換えようとしました。問題が残ります。

関連するコードを新しく作成した Xcode 5 プロジェクトにコピーしたところ、textField が IB で作成されているかプログラムで作成されているかにかかわらず、まったく同じ問題が発生しています。私が考えることができるのは、シミュレーターにバグがあるか、テキストプロパティが変更されたときに UITextField が自動的にフォントを変更できるということだけですか? シミュレータのみの問題かどうかを判断するための実際の iOS 7 デバイスはありません。他の誰かがこの問題に遭遇したに違いありませんか? iOS 6 以前の BTW でも同じコードで問題なく動作します。

問題の原因となっている基本コードを分離して削除しました-

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

self.firstDatePicker = [[UIDatePicker alloc] init];
self.firstDatePicker.datePickerMode = UIDatePickerModeDate;
[self.firstDatePicker addTarget:self action:@selector(firstDateChanged:) forControlEvents:UIControlEventValueChanged];

self.firstTextField = [[UITextField alloc] initWithFrame:CGRectMake(118, 207, 164, 30)];
self.firstTextField.borderStyle = UITextBorderStyleRoundedRect;
self.firstTextField.font = [UIFont fontWithName:@"MarkerFelt-Wide" size:14];

self.firstTextField.inputView = self.firstDatePicker;
[self.firstTextField addTarget:self action:@selector(editingBeganFirstDate:) forControlEvents:UIControlEventEditingDidBegin];
[self.view addSubview:self.firstTextField];

self.secondDatePicker = [[UIDatePicker alloc] init];
self.secondDatePicker.datePickerMode = UIDatePickerModeDate;
[self.secondDatePicker addTarget:self action:@selector(secondDateChanged:) forControlEvents:UIControlEventValueChanged];

self.secondTextField = [[UITextField alloc] initWithFrame:CGRectMake(118, 267, 164, 30)];
self.secondTextField.borderStyle = UITextBorderStyleRoundedRect;
self.secondTextField.font = [UIFont fontWithName:@"MarkerFelt-Wide" size:14];
self.secondTextField.inputView = self.secondDatePicker;
[self.secondTextField addTarget:self action:@selector(editingBeganSecondDate:) forControlEvents:UIControlEventEditingDidBegin];
[self.view addSubview:self.secondTextField];


}



-(void) editingBeganFirstDate:(UITextField*) sender
{
[self firstDateChanged:self.firstDatePicker];
}

-(void) editingBeganSecondDate:(UITextField*) sender
{
[self secondDateChanged:self.secondDatePicker];
}

-(void) firstDateChanged:(UIDatePicker*) sender
{
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateStyle = NSDateFormatterMediumStyle;

self.firstTextField.text = [formatter stringFromDate:[sender date]];
}

-(void) secondDateChanged:(UIDatePicker*) sender
{
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateStyle = NSDateFormatterMediumStyle;

self.secondTextField.text = [formatter stringFromDate:[sender date]];
}

アクションによってトリガーされるメソッド「firstDateChanged」および「secondDatechanged」をコードで直接呼び出すと、問題が発生するようです。「editingBegan」メソッドでこれを行いましたが、テキストフィールド間で入力フォーカスが変更されると、フォントが変更されますか? なぜこれが起こるのかはわかりませんが、少なくとも原因はわかっています!

少し読んで、イベントトリガーメソッドをプログラムで呼び出す方法を見つけました。「editingBegan」メソッドを次のように変更しました

-(void) editingBeganFirstDate:(UITextField*) sender
{
[self.firstDatePicker sendAction:@selector(firstDateChanged:) to:self forEvent:nil];
}

-(void) editingBeganSecondDate:(UITextField*) sender
{
[self.secondDatePicker sendAction:@selector(secondDateChanged:) to:self forEvent:nil];
}

残念ながら、フォントの問題は解決しません!?

4

0 に答える 0