Я делаю приложение, в котором есть UITextView, который позволяет пользователям вводить только 2 строки текста. Таким образом, текст не достигнет третьей строки, так как UITextView попросит его остановиться. Кто-нибудь знает, как подойти к этому в программировании Swift? Я обнаружил, что есть способ для достижения этой цели, но написано в коде Objective-CiOS: Как ограничить количество строк UITextView с помощью Swift?
- (BOOL) textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSString *newText = [textView.text stringByReplacingCharactersInRange:range withString:text];
_tempTextInputView.text = newText;
// Calcualte the number of lines with new text in temporary UITextView
CGRect endRectWithNewText = [_tempTextInputView caretRectForPosition:_tempTextInputView.endOfDocument];
CGRect beginRectWithNewText = [_tempTextInputView caretRectForPosition:_tempTextInputView.beginningOfDocument];
float beginOriginY = beginRectWithNewText.origin.y;
float endOriginY = endRectWithNewText.origin.y;
int numberOfLines = (endOriginY - beginOriginY)/textView.font.lineHeight + 1;
if (numberOfLines > maxLinesInTextView) {// Too many lines
return NO;
}else{// Number of lines will not over the limit
return YES;
}
}
я боролся с эквивалентным кодом в Swift особенно эта строка кода:
NSString *newText = [textView.text stringByReplacingCharactersInRange:range withString:text];
Я просто не мог Не знаю, как бороться с NSRange в Swift. Может кто-нибудь, пожалуйста, помогите мне?
Я думаю, что это должно работать для этой строки: NSString * newText = textView.text.stringByReplacingCharactersInRange (range, withString: text) – rdelmar
@rdelmar: что вы подразумеваете под этим? –
Вы спросили, как перевести эту строку в Свифт. Вот как вы это делаете (предполагая, что вы уже создали диапазон и текст). – rdelmar