ios - 在 iOS7 中更改安全 UITextField 奇怪行为中的 UIFont

标签 ios objective-c passwords ios7 uitextfield

我创建了一个简单的项目:https://github.com/edzio27/textFieldExample.git

我在其中添加了两个 UITextField,一个带有登录名,第二个带有安全密码。我注意到有奇怪的行为:

  1. 点击登录并添加一些文字,
  2. 点击密码并添加一些文本,
  3. 再次点击登录UITextField

enter image description here

请注意,密码字体大小有一个奇怪的行为。它仅出现在 iOS7 中。

可能是什么问题?

谢谢。

最佳答案

正如一些人指出的那样,安全文本字段似乎并不总是能很好地与自定义字体配合使用。我通过使用 UITextField 的 UIControlEventEditingChanged 来监视文本字段的更改并在输入任何内容时将其设置为系统字体(带有正常外观的项目符号)来解决这个问题,否则使用我的自定义字体。

这使我可以继续为文本字段占位符使用我的自定义字体,并且在输入密码时仍然看起来不错。输入时一次显示一个的字符将是系统字体,但我同意这一点。

在viewDidLoad中:

[self.passwordTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

现在添加一个 textFieldDidChange 方法:

- (void)textFieldDidChange:(id)sender
{
    UITextField *textField = (UITextField *)sender;

    if (textField == self.passwordTextField) {
        // Set to custom font if the textfield is cleared, else set it to system font
        // This is a workaround because secure text fields don't play well with custom fonts
        if (textField.text.length == 0) {
            textField.font = [UIFont fontWithName:@"OpenSans" size:textField.font.pointSize];
        }
        else {
            textField.font = [UIFont systemFontOfSize:textField.font.pointSize];
        }
    }
}

关于ios - 在 iOS7 中更改安全 UITextField 奇怪行为中的 UIFont,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475918/

相关文章:

ios - 您可以使用 iOS 应用程序发送弹出通知吗?

ios - 事件指标多线程执行

perl - 如何在Perl脚本中加密或隐藏密码?

database - 密码、盐、哈希、DB : For the millionth time

facebook - 已更改密码,访问 token 无效

ios - Html 字符串转换为属性字符串\U00002028\n ios

objective-c - 如何垂直移动 UITableView

ios - 在 Objective C/Swift 中,抛出错误时在方法中返回什么?

objective-c - 来自不同类的 NSMutableArray 获取 Null

ios - 推送 View Controller 时,UISearchController searchBar 不会消失