我有一个UITextField
,它使用的是Museo Sans Rounded 300字体。对于普通的UITextFields来说,一切都很好,但当你设置secureTextEntry = YES
时,随着UITextField获得和失去焦点(即成为第一个响应者,然后放弃),子弹的大小会发生令人不安的变化。
当UITextField
具有焦点时,项目符号显示为使用自定义字体,但一旦失去焦点,它们将更改为更大(标准大小)的项目符号。
发布于 2014-01-07 21:44:32
因此,我发现解决此问题的唯一方法是使用textFieldDidBeginEditing
和textFieldDidEndEditing
委托方法,跟踪在文本字段中输入的内容,将其替换为项目符号掩码,并禁用secureTextEntry
。因此,当他们离开现场时,他们实际上只是看到了正确数量的子弹,而不是他们的安全文本。这是老生常谈和凌乱,但它对我,也许对你也行。
发布于 2014-07-24 22:20:32
我找到了一个简单的解决方案,而且效果很好。基本上,当您将secureTextEntry设置为yes时,您必须将字体更改为自定义字体。
- (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];
}
}
发布于 2014-01-25 06:39:35
另一种解决方法:
虽然这是一个iOS错误(我应该补充说,这是iOS 7中的新错误),但我确实有另一种方法来解决它,人们可能会发现可以接受。功能仍有轻微降级,但降级不大。
基本上,只要字段中输入了某些内容,就将字体设置为默认的字体系列/样式;但如果没有输入任何内容,则将其设置为您的自定义字体。(字体大小可以保持不变,因为它是系列/样式,而不是大小。)捕获字段值的每次更改,并在此时相应地设置字体。然后,当没有输入任何内容时,模糊的“提示”文本将具有您想要的字体(自定义);但当输入任何内容(无论您是否正在编辑)时,将使用默认字体(Helvetica)。既然子弹就是子弹,这看起来应该没问题。
缺点之一是,字符在被项目符号替换之前键入时,将使用默认字体(Helvetica)。不过,这只是针对每个字符的瞬间。如果这是可以接受的,那么这个解决方案是可行的。
https://stackoverflow.com/questions/20649311
复制相似问题