2015-09-07 4 views
0

Как говорится в названии, у меня проблема, когда края моего UITextField имеют все большее черное пространство, чем больше текста, который я надел. Причиной может быть метод делегатаРасширение черных линий на краях UITextField

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 

    CGFloat textWidth = [[NSString stringWithFormat:@"%@%@",[textField text], string] sizeWithFont:[textField font]].width; 
    textWidth += 15; 
    CGRect tFFrame = [textField frame]; 

    tFFrame.size.width = textWidth; 
    textField.frame = tFFrame; 

    return YES; 
} 

Я понятия не имею, почему это происходит, и поставит скриншоты в случае я не объясняющие его достаточно хорошо.

Перед черных линиями

No black lines

черные линии начали

Black Lines Started

Черных линий держать заполнение пространства дольше текст получает

Black lines growing

Пожалуйста, помогите!

+0

Не относится к прямой проблеме, но ваш расчет 'textWidth' недействителен. Он не будет работать, если пользователь вставляет текст в текстовое поле или удаляет текст. И изменение рамки текстового поля в методе 'shouldChangeCharactersInRange:' - плохая идея. – rmaddy

+0

@rmaddy Я делаю это, потому что кажется, что единственный способ получить текстовое поле для расширения по горизонтали при наборе текста. Я мог бы немного подправить его. – Minebomber

ответ

0

Я только что получил ответ. Простой setNeedsDisplay после того, как я установил рамку текстового поля. Это предотвращает показ черных линий.

0

Как вы создаете границу в этом текстовом поле? Похоже, вы можете использовать фоновое изображение. Если это так, изображение будет растягиваться и искажаться по мере роста текста, что могло бы вызвать проблему.

проверить: resizableImageWithCapInsets: в яблочном документе для получения информации о том, как этого избежать.

+0

Я фактически выделяю UITextField программно, и я устанавливаю границу и цвет фона: 'textField.borderStyle = UITextBorderStyleLine; textField.layer.cornerRadius = 5.0f; textField.layer.masksToBounds = YES; textField.layer.borderColor = [[UIColor lightGrayColor] CGColor]; textField.layer.borderWidth = 1.0f; ' – Minebomber

Смежные вопросы