【问题标题】:iOS: How to limit number of lines of UITextView using Swift?iOS:如何使用 Swift 限制 UITextView 的行数?
【发布时间】:2014-10-01 03:18:15
【问题描述】:

我正在制作一个应用程序,其中有一个 UITextView,它只允许用户输入 2 行文本。所以文本不会到达第三行,因为 UITextView 会要求它停止。有谁知道如何在 Swift 编程中解决这个问题?我发现有一种方法可以实现这一点,但用 Objective-C 代码编写

- (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];  

我只是不知道如何在 Swift 中处理 NSRange。有人可以帮我吗?

【问题讨论】:

  • 我认为这应该适用于该行: NSString *newText = textView.text.stringByReplacingCharactersInRange(range, withString: text)
  • @rdelmar:那是什么意思?
  • 你问如何将那一行翻译成 Swift。你就是这样做的(假设你已经创建了范围和文本)。
  • @rdelmar:您在编辑之前的评论令人困惑。但是这一行给了我一个语法错误 textView.text.stringByReplacingCharactersInRange(range, withString: text) 说“nsrange is not convertible to range string.index”
  • 我认为您可能必须为 textView 的文本创建一个变量(var theText = textView!.text as NSString),并在我发布的代码中使用它而不是 textView.text。

标签: ios swift uitextview


【解决方案1】:

能否只设置两行的框架大小并限制可输入的字符总数?

【讨论】:

  • 可以的。但是我的应用程序有多个 UITextViews 所以我担心你的方法在这种情况下不太实用,因为我需要计算每个 UITextView 应该限制多少个字符
猜你喜欢
  • 2023-03-27
  • 2015-10-20
  • 2011-07-10
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
相关资源
最近更新 更多