首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用自定义字体时,带有secureTextEntry的UITextField中的项目符号的大小会随着焦点切换而改变

使用自定义字体时,带有secureTextEntry的UITextField中的项目符号的大小会随着焦点切换而改变
EN

Stack Overflow用户
提问于 2013-12-18 11:48:13
回答 4查看 4.3K关注 0票数 20

我有一个UITextField,它使用的是Museo Sans Rounded 300字体。对于普通的UITextFields来说,一切都很好,但当你设置secureTextEntry = YES时,随着UITextField获得和失去焦点(即成为第一个响应者,然后放弃),子弹的大小会发生令人不安的变化。

UITextField具有焦点时,项目符号显示为使用自定义字体,但一旦失去焦点,它们将更改为更大(标准大小)的项目符号。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-07 21:44:32

因此,我发现解决此问题的唯一方法是使用textFieldDidBeginEditingtextFieldDidEndEditing委托方法,跟踪在文本字段中输入的内容,将其替换为项目符号掩码,并禁用secureTextEntry。因此,当他们离开现场时,他们实际上只是看到了正确数量的子弹,而不是他们的安全文本。这是老生常谈和凌乱,但它对我,也许对你也行。

票数 5
EN

Stack Overflow用户

发布于 2014-07-24 22:20:32

我找到了一个简单的解决方案,而且效果很好。基本上,当您将secureTextEntry设置为yes时,您必须将字体更改为自定义字体。

代码语言:javascript
复制
- (void)textFieldDidBeginEditing:(UITextField *)textField{

    if([textField.text isEqual:@"Password"]){
        textField.text = @"";
        textField.font = [UIFont fontWithName:@"Helvetica" size:14.5];
        textField.secureTextEntry = YES;
    }
}

- (void)textFieldDidEndEditing:(UITextField *)textField{

    if([textField.text isEqual:@""]){
        textField.text = @"Password";
        textField.secureTextEntry = NO;
        textField.font = [UIFont fontWithName:@"YourFont" size:14.5];
    }
}
票数 4
EN

Stack Overflow用户

发布于 2014-01-25 06:39:35

另一种解决方法:

虽然这是一个iOS错误(我应该补充说,这是iOS 7中的新错误),但我确实有另一种方法来解决它,人们可能会发现可以接受。功能仍有轻微降级,但降级不大。

基本上,只要字段中输入了某些内容,就将字体设置为默认的字体系列/样式;但如果没有输入任何内容,则将其设置为您的自定义字体。(字体大小可以保持不变,因为它是系列/样式,而不是大小。)捕获字段值的每次更改,并在此时相应地设置字体。然后,当没有输入任何内容时,模糊的“提示”文本将具有您想要的字体(自定义);但当输入任何内容(无论您是否正在编辑)时,将使用默认字体(Helvetica)。既然子弹就是子弹,这看起来应该没问题。

缺点之一是,字符在被项目符号替换之前键入时,将使用默认字体(Helvetica)。不过,这只是针对每个字符的瞬间。如果这是可以接受的,那么这个解决方案是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20649311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档