Почему NSString sizeWithFont: возвращает неправильный размер?
Мне нужно определить высоту UITextView сверху вниз до курсора. Я обрезаю текст, который он содержит (так что он идет только до курсора), а затем с помощью NSString sizeWithFont:constrainedToSize:lineBreakMode:
способ отработать высоту, вот так:
NSRange range;
range.location = noteTextView.selectedRange.location;
range.length = noteTextView.text.length - range.location;
NSString *string = [noteTextView.text stringByReplacingCharactersInRange:range withString:@""];
CGSize size = [string sizeWithFont:noteTextView.font
constrainedToSize:noteTextView.frame.size
lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"height is: %f \n", size.height);
Это происходит каждый раз, когда я что-то печатаю.
Проблема в том, что когда я смотрю NSLog во время ввода, он не регистрирует изменение высоты, пока я не наберу 4 символа в новой строке. Это как если бы sizeWithFont
Метод состоит из четырех символов. Вот пара скриншотов, показывающих, что я имею в виду:
Кто-нибудь может сказать мне, что происходит?
1 ответ
@ Комментарий Владимира верен, я думаю - строка NSString не учитывает поля UITextField.
Вы можете попытаться получить текст, предшествующий курсору, и создать новый UITextField, который содержит только этот текст.
Тогда, если вы позвоните [tempTextField sizeToFit]
в вашем новом текстовом поле его границы должны соответствовать размеру, который вы ищете.