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