2016-07-25 6 views
2

enter image description hereテキストフィールドプレースホルダーフォントが問題を作成します

ボタンをrightViewとしてテキストフィールドに追加しました。

カスタムフォントの属性付きテキストをプレースホルダテキストとして設定しました。

私のテキストフィールドのプレースホルダとテキストフォントは異なります。

しかし、テキストフィールドのテキストが大きく、テキスト全体を選択して を削除すると、そのフォントにプレースホルダテキストが表示されません。テキストフィールドのテキストフォントで表示されます。

詳細説明:

  • 私のテキストフィールドのテキストのフォントは次のとおりです。OpenSans太字18.0
  • 私のテキストフィールドのプレースホルダーテキストのフォントは次のとおりです。OpenSans 18.0(正規)

しかし、私は穴のテキストを選択(大文字と小文字を削除すると、プレースホルダーのテキストが表示されます:OpenSans Bold 18.0

OpenSans 18.0(Regular)

enter image description here

答えて

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

@EricD:私はちょうど私がずっと前に使用されるコードを与えました。それでも、私はあなたのポイントを得る。回答が更新されました。 – Nishant

+0

ありがとうございます。それは働いている。 –

関連する問題