Текст UITextField перекрывается кнопкой очистки - PullRequest
5 голосов
/ 02 декабря 2011

Я добавляю текстовое поле для просмотра следующим образом:

UITextField* tf_email = [[UITextField alloc] initWithFrame:CGRectMake((320-btnImage1.size.width)/2, 170, 175, 35)];
    [tf_email setBackgroundColor:[UIColor clearColor]];
    [tf_email setBorderStyle:UITextBorderStyleRoundedRect];
    [tf_email setClearButtonMode:UITextFieldViewModeWhileEditing];
    [tf_email setReturnKeyType:UIReturnKeyDone];
    [tf_email setAutocapitalizationType:UITextAutocapitalizationTypeNone];
    [tf_email setEnablesReturnKeyAutomatically:NO];
    [tf_email setDelegate:self];    
    [tf_email setOpaque:YES];
    tf_email.tag=1;
    tf_email.font = TTSTYLEVAR(font);
    tf_email.layer.cornerRadius = 10;
    tf_email.keyboardType = UIKeyboardTypeEmailAddress;
    [tf_email setAutocorrectionType:UITextAutocorrectionTypeNo];
    tf_email.placeholder = @"your@email.com";
    [self.view addSubview:tf_email];

Когда я ввожу длинный текст в это поле, текст и кнопка очистки перекрываются. Кто-нибудь знает, как это исправить?

Ответы [ 4 ]

12 голосов
/ 03 декабря 2012

Создайте подкласс UITextField и переопределите методы, приведенные ниже,

/*< Place holder position >*/
- (CGRect)textRectForBounds:(CGRect)bounds {

    bounds.size.width = bounds.size.width - 20.0f;
    return bounds;
}

/*< Text Posiotion >*/
- (CGRect)editingRectForBounds:(CGRect)bounds {

    bounds.size.width = bounds.size.width - 20.0f;
    return bounds;
}

Ура !!!

3 голосов
/ 05 декабря 2015

@ Августин П А, я думаю, что лучший подход - вызвать супер и изменить результат следующим образом:

-(CGRect) textRectForBounds:(CGRect)bounds
{
    CGRect rect = [super textRectForBounds:bounds];
    rect.size.width = rect.size.width - 20.0f;
    return rect;
}

-(CGRect) editingRectForBounds:(CGRect)bounds
{
    CGRect rect = [super editingRectForBounds:bounds];
    rect.size.width = rect.size.width - 20.0f;
    return rect;
}
3 голосов
/ 22 декабря 2011

Я понял, в чем проблема. В другом файле у меня была категория, определенная для UITextField. В этой категории указано, что текстовая область находится очень близко к левой и правой границе. Это вызывало совпадение.

Извлеченный урок: при определении категорий мы должны использовать отдельные файлы, чтобы их можно было легко обнаружить.

1 голос
/ 02 декабря 2011

[button bringSubviewToFront:self.view];

Afert добавить текстовое поле ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...