2013-08-31 9 views
14

私のUITextFieldが最初のレスポンダ(編集時)になると、テキストは非常にわずかに下がり、文字間の間隔はごくわずかに増加します。最初のレスポンダーを辞任すると(キーボードが離れる)、文字は元の位置に戻ります。私はカスタムフォントを使用しているので、これはフォントの問題だと思っていましたが、システムフォントや他のカスタムフォントを使用しても同じことが起こります。UITextfieldのテキストが編集中に移動しています

以下の画像を確認してください。最初のものはキーボードの下にあり、もう1つはキーボードの上にあります。分散は小さいので、見るのが難しいかもしれませんが、キーボードアップ状態では、文字が下に離れてわずかに離れていることが示されます。

enter image description here

enter image description here

+2

私のために働きましたか?どのようなプロパティが設定されていますか?ビューにどのように追加されますか? – AdamG

+0

私はそれをnibファイル経由でビューに追加していますが、プログラムでは何もしません。私は、カスタムフォント、中央の配置、境界線、明確なボタンがなく、フィットするように調整して、それ以外のものはデフォルト設定です。 –

+0

解決方法を見つけましたか? – AdamG

答えて

0

おそらく、少し小さすぎて高さ方向であるためにあなたのUITextFieldをサイズにしました。それはピクセルまたは2つの背の高いように手動でサイズを変更してみてください。または、XIBエディタでそれを選択し、[エディタ]メニューの[コンテンツに合わせるサイズ]を使用します。このテキストシフトが起こらないように、テキストフィールドを適切なサイズに設定する必要があります。

+0

私はUITextFieldのサイズを変更しようとしたと "サイズに合わせてコンテンツ"、運がないと。 –

2

「調整する」プロパティを選択すると、UITextFieldのプロパティadjustsFontSizeToWidthが設定されます。このプロパティ(UITextField Apple Documentation)は

通常は、テキストフィールドの内容は、フォントプロパティで指定したフォントで描かれています。ただし、このプロパティがYESに設定されている場合、 とテキストプロパティの内容がテキストフィールドの境界の の四角形を超えると、文字列 が適合するか、最小フォントサイズに達するまで、受信者はフォントサイズの縮小を開始します。テキストはベースラインの に沿って縮小されています。

このプロパティのデフォルト値はNOです。 YESに変更する場合は、 minimumFontSizeプロパティを変更して、適切な最小フォントサイズを設定する必要があります。

私はこれをオフにし、それはそれを停止した後、ドキュメントのアドバイスに従っても、問題を引き起こしている可能性おり、そうでない場合は下minimumFontSizeプロパティを設定するかどう見て最初にしようとするだろう。

この問題は、「現在編集中の」カーソルが青色に表示されたことが原因である可能性があります。テキストのベースライン(reference)がテキストの最下部になります。あなたのテキストは、それがminimumFontSize/adjustsFontSizeToWidthの問題であるという方向に強く寄りかかるように、「ベースラインに沿って」縮小しています。

+0

ありがとうございます。 adjustsFontSizeToWidthプロパティをNO(チェックを外す)に設定したり、最小フォントサイズを変更したりしても問題は解決されませんでした。 –

+0

minimumfontsizeを設定すると、フォントと同じサイズになりましたか? – AdamG

+0

私はそれを無駄にしようとしました。私は水平位置を助けるこのポストを見つけましたが、テキストの間隔はまだ変わります。 http://stackoverflow.com/questions/6351340/using-a-custom-font-in-a-uitextfield-causes-it-to-shift-slightly-when-accessed –

0

FontプロパティをTextプロパティよりも前に設定する必要があります。

+0

これは問題に影響しません。 –

1

あなたが強制的にUITextFieldのファーストレスポンダを作っている場合は、viewDidAppearでそれを行う:代わりのviewDidLoadの...これは私のための問題... XIBで

+0

これは正確なものであり、答えとしてマークする必要があります。 –

2

、TextBorderStyleNone以外の任意の値に設定するテキストフィールドののborderStyleを解決しました。コードでは、textfieldのborderStyleをTextBorderStyleNoneとして明示的に設定します。

私は理由を理解できませんでしたが、初期化バグのようです。それは、UITextFieldをxibのアウトレットで初期化しない他のコードではうまく動作します。

xibでtextfieldのborderStyleをTextBorderStyleNoneに設定すると、コード内でTextBorderStyleNoneとしてborderStyleを設定しても問題は解決しません。それに続いて、値の変更によってトリガーされる何らかの「layoutIfNeeded」ものがあるかもしれません。

2

チェックオフ私のストーリーボードのtextFieldの「Clip to Bounds」はうまく動作します。

+0

これは私を助けました。上記のOTへのコメントで指摘されているように、私は、目に見えないボーダースタイルを使用しているときに、iOS 10.0(しかし9.3.xではなく)から起きていることに気付きました。デフォルトの境界線スタイルには問題はありません。 – Jonny

1

Interface Builderのフォントサイズに等しいMin Font Sizeプロパティを設定するには、あなたがより多くのコードを表示することができます

関連する問題