我已经在不同的文本视图中显示了一个大文本。所以我已将整个文字内容设置为NSTextContainer
。然后添加了NSLayoutManager
。为不同的UITextViews
创建了NSTextContainers。我在不同的TextViews
中得到了连续的文字。但是我不能使用条件来限制文本视图的数量。
我的问题是我想创建与内容相关的文本视图。内容可能会有所不同。我试图创建一个条件bw全文内容& textview的内容。但即使每个文本包含不同的文本,所有textview.text length
都返回与整个文本内容的长度相同的值!!!!
以下是代码>>
-(void)paginate:(NSString*)chapterData WithSize:(CGRect)frame
{
int stringLength,totalTextViewsTextLength;
totalTextViewsTextLength=0;
NSString* htmlString = [NSString stringWithContentsOfFile:chapterData encoding:NSUTF8StringEncoding error:nil];
NSAttributedString *temp=[[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil];
NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:temp];
NSLayoutManager *textLayout = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:textLayout];
stringLength=[temp length];
while (totalTextViewsTextLength<stringLength) // checks whether all the content has been added to textview or not
{
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:frame.size];
[textLayout addTextContainer:textContainer];
// textContainer.lin
UITextView *textView=[[UITextView alloc]initWithFrame:frame textContainer:textContainer];
textView.tag=textviewCount;
// Store textviews in array
[pagedData addObject:textView];
totalTextViewsTextLength+=[textView.text length];
textviewCount++;
}
}
我需要的是获取每个textview中显示的文本长度(包含不同的textcontainers)??????
答案 0 :(得分:1)
我告诉你究竟是什么,你想要的。 你有修复文本视图的高度,在这个textView你要设置文本,对吧?如果正确,则使用以下方法:
假设您的textView高度为450
1,计算要在textView
中显示的文本的高度这里ft是你的字体大小,UIFont * ft = [UIFont systemFontOfSize:12.0];
CGSize expectedSize = [textview.text sizeWithAttributes:@{NSFontAttributeName:ft}];
float height= 0;
height = expectedLabelSize.height
2,检查textView的高度以及要在textView
中显示的文本if(height > 'your textview height')
{
// add you code here
}
答案 1 :(得分:0)
获取可见字符的数量首先使用此答案ios - how to find what is the visible range of text in UITextView?中的代码,然后获取length
的{{1}}
答案 2 :(得分:0)
要在textview中使用文本的长度:
int textLength = [someTextView.text length]
要获得不包括空格的长度,请使用:
int textLength= [someTextView.text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]]length];
更新要在输入每个字符后获取长度,您必须使用以下方法编写代码
这将调用您键入的每个字符。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger textLength = [textField.text length];
NSLog(@"Textfield Length :%ld",textLength);
return YES;
}
答案 3 :(得分:-2)
使用以下方式,在将文本设置为textview之前,检查字符串的长度:
NSString *textEntered = [[[textview.text copy] autorelease] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if([textEntered length] > 450) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message" message:kMoreThan450CharactersForQuestion delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
[alertView release];
}