6

ユーザーが編集しているときにuitextfieldを強調表示したいので、textfieldのborderstyleのデフォルトをUITextBorderStyleNoneに設定し、uitextfieldsデリゲートを次のように使用します。

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [textField setBorderStyle:UITextBorderStyleBezel];
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [textField setBorderStyle:UITextBorderStyleNone];
}

Bezelスタイルが設定およびレンダリングされますが、endeditingが呼び出されると、noneスタイルは適用されません。noneを別のものに変更しようとしましたが(たとえば、丸められたrect)、それは正しくレンダリングされます。

誰かが私がこれを機能させる方法を知っていますか?

4

2 に答える 2

10

はい、それはバグです。とにかく、私はこのコードを使用して解決しました:

textField.borderStyle = UITextBorderStyleLine;
textField.borderStyle = UITextBorderStyleNone;

これはあまり美しい方法ではありませんが、Appleがこの問題を修正するまで機能します。

于 2013-01-29T09:12:52.757 に答える
2

私もこの問題を抱えていました。私のテストからは、それ以外のスタイルに設定できるように見えましたUITextBorderStyleNone

少なくとも私にとって有効な回避策は、以下に示すように、テキストフィールドを無効にしてから再度有効にすることでした。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.enabled = NO;
    textField.borderStyle = UITextBorderStyleNone;
    textField.enabled = YES;
}

私はそれが本当に好きではありませんが、今のところは機能します。

于 2015-09-09T10:47:09.287 に答える