【问题标题】:Textfield placeholder font creates issue文本字段占位符字体会产生问题
【发布时间】:2016-11-28 23:12:18
【问题描述】:

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

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

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

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

详细说明:

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

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

但它应该在以下位置显示占位符文本:OpenSans 18.0 (Regular)

【问题讨论】:

    标签: ios swift uitextfield uifont


    【解决方案1】:

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

    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;
    }
    

    对象-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;
    }
    

    【讨论】:

    • @EricD:我刚刚给出了我很久以前使用的代码。不过我明白你的意思。答案已更新。
    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多