我创建了一个“UITextView”,而不是设置最大字符限制,我希望在字符到达行尾时禁用键盘。我尝试研究,但找不到答案。好像我是第一个问这个问题的人。
希望您能够帮助我。谢谢
我创建了一个“UITextView”,而不是设置最大字符限制,我希望在字符到达行尾时禁用键盘。我尝试研究,但找不到答案。好像我是第一个问这个问题的人。
希望您能够帮助我。谢谢
- (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>
好吧,我想我应该自己回答这个问题。
我尝试了这段代码,这对我有用。
- (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 的值时strH
,NSLog
我发现 51 标志着第三行的开始。在其中我不允许文本达到那个高度,因为我的UITextView
应用程序中只需要允许 2 行。
在constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH - 20, 10000)
我从我的UITextView
宽度中减去 20px 以考虑它的左右边距。