防止用户在 uitextview 中输入更多字符
Prevent user from entering more characters into uitextview
在 textview 达到给定高度后,如何防止用户在 uitextview 中输入更多字符?这是我认为可行但行不通的代码。我无法再输入任何字符,但出于某种原因我什至无法删除任何字符..
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (textView.frame.size.height > 102)
{
return NO;
}
return YES;
}
有什么想法吗? :(
创建一个与编辑产生的内容相匹配的新字符串。如果新字符串比现有字符串短,return YES
也。
示例:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSMutableString *string = [NSMutableString stringWithString:[textView text]];
[string replaceCharactersInRange:range withString:text];
BOOL deleted = [string length] < [[textView text] length];
if (deleted) {
NSLog(@"Characters deleted");
return YES;
}
if (textView.frame.size.height > 102)
{
return NO;
}
return YES;
}
这个有用吗?
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSLayoutManager* layoutManager = textView.layoutManager;
NSTextContainer* textContainer = textView.textContainer;
int glyphCount = layoutManager.numberOfGlyphs;
if(text.length == 0) glyphCount--; //deleting
CGRect textRect = [layoutManager boundingRectForGlyphRange:NSMakeRange(0, glyphCount) inTextContainer: textContainer];
if (textRect.size.height > 102)
{
return NO;
}
return YES;
}
在 textview 达到给定高度后,如何防止用户在 uitextview 中输入更多字符?这是我认为可行但行不通的代码。我无法再输入任何字符,但出于某种原因我什至无法删除任何字符..
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (textView.frame.size.height > 102)
{
return NO;
}
return YES;
}
有什么想法吗? :(
创建一个与编辑产生的内容相匹配的新字符串。如果新字符串比现有字符串短,return YES
也。
示例:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSMutableString *string = [NSMutableString stringWithString:[textView text]];
[string replaceCharactersInRange:range withString:text];
BOOL deleted = [string length] < [[textView text] length];
if (deleted) {
NSLog(@"Characters deleted");
return YES;
}
if (textView.frame.size.height > 102)
{
return NO;
}
return YES;
}
这个有用吗?
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSLayoutManager* layoutManager = textView.layoutManager;
NSTextContainer* textContainer = textView.textContainer;
int glyphCount = layoutManager.numberOfGlyphs;
if(text.length == 0) glyphCount--; //deleting
CGRect textRect = [layoutManager boundingRectForGlyphRange:NSMakeRange(0, glyphCount) inTextContainer: textContainer];
if (textRect.size.height > 102)
{
return NO;
}
return YES;
}