到达行尾时禁用UITextView

时间:2013-09-17 10:14:45

标签: objective-c uitextview

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

希望你能帮助我。感谢

2 个答案:

答案 0 :(得分: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;

of courde您需要将该textfield设置为delegate

textView.delgate = self;

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

@interface YourViewController : UIViewController <UITextViewDelegate>

答案 1 :(得分: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,因为当我检查strHNSLog的值时,我发现51标记了第三行的开头。其中我不允许文本达到该高度,因为我只需要在我的应用中允许2行UITextView

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