0

我创建了一个“UITextView”,而不是设置最大字符限制,我希望在字符到达行尾时禁用键盘。我尝试研究,但找不到答案。好像我是第一个问这个问题的人。

希望您能够帮助我。谢谢

4

2 回答 2

0
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

 NSMutableString * mutableString = [NSMutableString stringWithString:textView.text];
[mutableString insertString:text atIndex:textView.text.length];

if (mutableString.length <= desiredLenghtNumber) {
    return YES;

}
else  {
    return NO;
}

}

desiredLenghtNumber 是最大字母数,例如

int desiredLenghtNumber = 10;

当然,您需要将该文本字段设置为委托

textView.delgate = self;

并在 .h 文件中声明此委托

@interface YourViewController : UIViewController <UITextViewDelegate>
于 2013-09-17T10:21:36.360 回答
0

好吧,我想我应该自己回答这个问题。

我尝试了这段代码,这对我有用。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  NSString *myText = [textView.text stringByReplacingCharactersInRange:range withString:text];

  CGSize textSize = [myText sizeWithFont:textView.font constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH - 20, 10000) lineBreakMode:NSLineBreakByWordWrapping];

  NSInteger strH = textSize.height;
  NSLog(@"String Size Height %i",strH);
  NSInteger maxHeight = 51;

    if (strH >= maxHeight)

    {
      return NO;
    }

   return YES;
}

我在这里的代码中使用了 51,因为当我检查 in 的值时strHNSLog我发现 51 标志着第三行的开始。在其中我不允许文本达到那个高度,因为我的UITextView应用程序中只需要允许 2 行。

constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH - 20, 10000)我从我的UITextView宽度中减去 20px 以考虑它的左右边距。

于 2013-09-18T06:16:41.023 回答