Textfield占位符字体会产生问题

时间:2016-07-25 14:36:37

标签: ios swift uitextfield uifont

enter image description here

我已将按钮作为rightView添加到文本字段。

我已将自定义字体的属性设置为占位符文本。

我的文本字段的占位符和文本字体不同。

但是当textfield的文本很大并且我选择整个文本并删除时 然后它不会在其字体中显示占位符文本。它以textfield的文本字体显示。

详细说明:

  • 我的Textfield的文字字体是:OpenSans Bold 18.0
  • 我的Textfield的占位符文字字体是:OpenSans 18.0(常规)

但是当我选择孔文本(大)并删除文本时,它会显示占位符文本:OpenSans Bold 18.0

但它应该显示占位符文本:OpenSans 18.0(常规)

enter image description here

1 个答案:

答案 0 :(得分:3)

我认为每次占位符出现/消失时都必须设置字体。设置文本字段委托并添加此代码...

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let length = (textField.text?.characters.count)! + (string.characters.count - range.length)

    // If there is text in the text field
    if (length > 0) {
        // Set textfield font
        textField.font = UIFont(name: "OpenSans Bold", size: 18)
    } else {
        // Set textfield placeholder font (or so it appears)
        textField.font = UIFont(name: "OpenSans Regular", size: 18)
    }

    return true;
}

的OBJ-C:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{    
    // If there is text in the text field
    if (textField.text.length + (string.length - range.length) > 0) {
        // Set textfield font
        textField.font = [UIFont fontWithName:@"OpenSans Bold" size:18];
    } else {
        // Set textfield placeholder font (or so it appears)
        textField.font = [UIFont fontWithName:@"OpenSans Regular" size:18];
    }

    return YES;
}