UITextField在编辑模式下自定义字体会发生改变

3
我有一个从xib加载的UITextField。在它的视图控制器的viewDidLoad方法中,我将字体设置为自定义值,该值在.plist文件中正确设置了。它显示得很好,除了当它处于编辑模式时,字体从我的自定义字体切换到默认字体,我相信这是Helvetica。这很突兀,我想一直保持自定义字体。我找了一些解决方案,唯一尝试过的事情就是在textFieldShouldBeginEditingtextFieldDidBeginEditing委托方法中重置textField.font属性,但两者都没有起作用。
编辑:有人要求我提供代码,实际上只有一行,但是在这里。
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view from its nib.

        self.myTextField.font = [UIFont fontWithName:@"MyFont" size:18];
    }

我还尝试了以下两种方法来重置字体:

    -(void)textFieldDidBeginEditing:(UITextField *)textField
    {
        textField.font = [UIFont fontWithName:@"MyFont" size:18];
    }

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    {
        textField.font = [UIFont fontWithName:@"MyFont" size:18];
        return YES;
    }

这个代码并没有起到作用,尽管在编辑时字体会改变,但一旦键盘被隐藏后就会恢复到自定义字体。
第二次修改:
好吧,我刚刚做了一些我之前应该尝试过的事情,并使用了几个不同的字体文件。这两个字体都正常工作,但出于某种原因,我使用的自定义字体文件会导致问题,尽管在所有其他情况下它都能正常工作。

你能贴一些代码吗?我也在一个通过nib加载的UITextField上设置自定义字体,但无论状态如何,我都能看到这个字体。 - Thor Frølich
代码非常基础。要设置字体,请在您的视图控制器的viewDidLoad中添加以下内容:textField.font = [UIFont fontWithName:@"YourCustomFont" size:yourSize]; 为了使此字体起作用,您还需要在info.plist文件中加载ttf或otf文件。插入“应用程序提供的字体”键,然后将每个字体文件名作为数组成员输入。当然,您还必须将字体文件加载到您的项目中。 - Devin
很抱歉,我之前的评论可能表达不清楚。我知道如何包含自定义字体,并且目前正在处理一个项目,在其中我有一个带有自定义字体的UITextField。但是在进入编辑模式后,该字体不会更改为其他字体。因此,我只是想建议您发布相关代码,以便我们可以找到问题所在。 - Thor Frølich
如果您想,请粘贴您的字体名称。 - Deepesh
3个回答

1

我曾经遇到过一个OTF字体的问题(事实上,我一直都有OTF字体的问题...),所以现在我只使用TTF字体,效果非常好。如果您需要将字体从OTF转换,请查看字体转换网站


0

试试这个:

- (void)textFieldDidChange:(UITextField *)textField {
    textField.font = [UIFont fontWithName:@"MyFont" size:18];
}

或者作为fhat的替代方案,创建一个IBAction,将其连接到具有Editing Changed功能的textField,并将以下代码添加到您的.m文件中:
- (IBAction)textFieldEditingChanged:(id)sender {
    textField.font = [UIFont fontWithName:@"MyFont" size:18];
}

这也没有做任何事情。 - Devin
好的,那么尝试在IB中设置字体而不是使用代码,在IB中进行操作总是有效的。 - JonasG

0

根据我的经验,问题出在字体文件上。我发现唯一的解决方案是找到替代字体并进行切换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接