大量のテキストを表示し、一度にページを表示し、ユーザーが左右にスクロールできるようにすることで、その中を移動できるビューに取り組んでいます。
コンテンツの幅を画面の倍数に設定するとともに、pagingEnabledプロパティをYESに設定したUIScrollView内にUITextViewを配置することで、それができると思いました。
表示されるのは最初のページだけですが、右にフリックすると他の空白のページが表示されます。誰でもヒントを与えることができます。これがコードです...
label = [[UITextView alloc] initWithFrame: scroller.frame];
label.editable = NO;
label.scrollEnabled = NO;
label.multipleTouchEnabled = NO;
label.userInteractionEnabled = NO;
label.font = [UIFont systemFontOfSize: 14.0];
// Get text
std::string str;
// Next line gets a single string, which is from 2000 to 8000
//characters long
str = GetStringContent();
NSString * nsStr = [NSString stringWithCString: str.c_str()];
// Measure text that will display in one page.
CGRect rect = CGRectMake(0.0, 0.0, scroller.frame.size.width, scroller.frame.size.height);
CGSize calcSize = [nsStr sizeWithFont: [UIFont systemFontOfSize: 14.0]
constrainedToSize: rect.size lineBreakMode: UILineBreakModeWordWrap];
rect.size = calcSize;
CGRect maxRect = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 99999.0);
CGSize maxCalcSize = [nsStr sizeWithFont: [UIFont systemFontOfSize: 14.0]
constrainedToSize: maxRect.size lineBreakMode: UILineBreakModeWordWrap];
float pages = maxCalcSize.height / self.view.bounds.size.height;
int numberOfPages = (int)ceil(pages);
// Set text
label.text = [NSString stringWithCString: str.c_str()];
// Setup scroller
scroller.scrollEnabled = YES;
scroller.pagingEnabled = YES;
scroller.bounces = YES;
scroller.contentSize = CGSizeMake(label.frame.size.width * numberOfPages, scroller.frame.size.height);
scroller.contentOffset = CGPointMake(0, 0);
scroller.frame = rect;
scroller.clipsToBounds = YES;
[scroller addSubview: label];
[label sizeToFit];
ビューは IB で作成され、UIScrollView が IB に追加され、アウトレットの名前は「scroller」になります。
私はしばらくこれに取り組んできましたが、これを機能させることができないように見えるため、UIScrollView に関する基本的な何かが欠けているように感じます。
ポール