編集中にクリアボタンを有効にしてプロジェクトにUITextFieldがあります。Swift - クリアボタンが表示されたときにテキストシフトを無効にする
ボックス内の任意の中央揃えのテキストは、フォーカスのクリアボタンのためのスペースを確保するために左にシフトします。このシフトを無効にすることは可能ですか?私は気が散っていると感じます。
編集中にクリアボタンを有効にしてプロジェクトにUITextFieldがあります。Swift - クリアボタンが表示されたときにテキストシフトを無効にする
ボックス内の任意の中央揃えのテキストは、フォーカスのクリアボタンのためのスペースを確保するために左にシフトします。このシフトを無効にすることは可能ですか?私は気が散っていると感じます。
問題を解決するために、私はUITextFieldをサブクラス化し、サブクラスに以下を追加しました。
override func editingRectForBounds(bounds: CGRect) -> CGRect { let padding = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5); return UIEdgeInsetsInsetRect(bounds, padding) }
回答がここに発見された:Create space at the beginning of a UITextField
ことが可能に私はいくつかの注意を払ってこのシフト
を無効にするためです、はい、あなたは確かにそれを行うことができます。
下のスクリーンショットを参照してください。テキストの描画は、UITextFieldをサブクラス化する場合は、実際にはあなた次第です。drawText(in:)
および/またはtextRect(forBounds:)
をオーバーライドして、テキストの位置を管理します。
私は前のUITextFieldオーバーライドする必要がなかったので、これは憶測ですが、あなたはまた、テキストフィールドの 'textRectForBounds'メソッドをオーバーライドすることができませんでしたか? –
@DuncanCああ、それは私が言ったことです。私はSwift 3でそれを言っただけです:) Xcode 8はGMになって、未来に足を踏み入れる時間です。 – matt
ああ、そのビットを逃した。もっと詳しく読んでいるはずです。 –