2012-05-30 6 views
3

UITextFields в моем приложении имеет текст-заполнитель, определенный (в Interface Builder), и я не могу заставить эти поля получать фокус (т.е. показывать клавиатуру и разрешать редактирование), когда Я нажимаю на область, занятую текстом-заполнителем. Если я нажимаю на текстовые поля в области, расположенной за пределами текста слова заполнителя (хотя все еще находится в пределах самого текстового файла), он действует как нормальный (т. Е. Клавиатура всплывает, и я могу редактировать содержимое текстового поля). Как я могу это исправить?UITextField - Добавление UIView для leftView - Не удается получить Фокус

Спасибо.

EDIT 1

Хорошо, я думаю, что я получил его. Я также устанавливаю пустой вид свойства «leftView» этих UITextFields. Если я удалю это, вы можете коснуться UITextFields в области текста заполнителя и реагировать так, как ожидалось; Мне нужен этот вид для LeftView. Если вы измените цвет фона этого спейсерного вида на красный, вы увидите, что он совсем не мешает, поэтому я не знаю, что происходит.

Почему этот код вызывает эту проблему?

Спасибо.

+(UIView*)getTextFieldLeftSpacerViewWithBackgroundColor:(UIColor*)backgroundColor andHeight:(CGFloat)height 
{ 
    UIView *leftWrapper = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 8.0f, height)]; 
    leftWrapper.autoresizingMask = UIViewAutoresizingNone; 
    [leftWrapper setOpaque:YES]; 
    if(backgroundColor){leftWrapper.backgroundColor = backgroundColor;} 
    else{leftWrapper.backgroundColor = [UIColor clearColor];} 
    return [leftWrapper autorelease]; 
} 

+(void)setTextFieldLeftSpacerForTextFieled:(UITextField*)textField 
{ 
    if(textField) 
    { 
     UIView *spacer = [MYViewController getTextFieldLeftSpacerViewWithBackgroundColor:nil andHeight:textField.bounds.size.height]; 
     textField.leftView = spacer; 
     textField.leftViewMode = UITextFieldViewModeAlways; 
    } 
} 
+0

Как вы настройки замещающий текст? – jlehr

+0

Итак, прежде всего, когда я перетаскиваю UITextField в Interface Builder, в нем нет текста по умолчанию. Я использую XCode 4.3.2. Вы назначаете текст в GUI Designer? Скажите мне больше :-) – trumpetlicks

+0

@trumpetlicks Текст заполнителя можно установить непосредственно в Инспекторе атрибутов в IB. OP говорит, что он установил его в IB. Заполнитель не является тем же самым, что и текст по умолчанию. – jlehr

ответ

1

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

Indent the text in a UITextField

5

Просто столкнулся с той же проблемой, и не хотел, чтобы подклассы, только пришлось использовать:

leftWrapper.userInteractionEnabled = NO; 
Смежные вопросы