在我的应用程序中,我使用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];
}
不幸的是它没有解决字体问题!?