UITextView显示文档的翻页功能

UITextView继承UIScrollView,在显示大量文字的时候,可以通过上下滑动进行浏览。如果有点击屏幕左右两边,进行上一页或下一页操作的话,就需要在UITextView上添加UITapGestureRecognizer。值得注意的是,UITextView的editable属性要设置为NO,否则UITapGestureRecognizer失效。具体点击后运行的代码如下:


- (void)viewTap:(UIGestureRecognizer *)gesture

{

CGFloat currentY = self.textView.contentOffset.y;

CGFloat currentX = self.textView.contentOffset.x;

CGFloat screenW = [UIScreen mainScreen].bounds.size.width;

CGFloat screenH = [UIScreen mainScreen].bounds.size.height;

CGPoint point = [gesture locationInView:self.textView];

if (point.x > 0 && point.x < (screenW/3.0))

{

if (self.currentPage != 1)

{

currentY -= screenH;

self.textView.contentOffset = CGPointMake(currentX, currentY);

self.currentPage -=1;

}

else

{

NSLog(@"跳转到上一章");

return;

}

}

else if(point.x > (screenW/2.0) && point.x < screenW)

{

currentY += screenH;

if (self.currentPage != self.totalPage)

{

self.textView.contentOffset = CGPointMake(currentX, currentY);

self.currentPage +=1;

}

else

{

NSLog(@"跳转到下一章");

[self showTheStatusBar];

return;

}

}

else

{

}

self.pageNumLabel.text = [NSString stringWithFormat:@"%ld/%ld",(long)self.currentPage,(long)self.totalPage];

}

self.textView的总页数是通过字符串来计算出self.textView.contentSize.height,除以当前屏幕高度获得的。

可以在每次翻页的时候,在本地记录self.textView.contentOffset.y的值,再次进入阅读页面时,可以直接跳转到已阅读的位置。

自定义UITextView,取消显示选中后系统菜单,使用UIMenuController实现需求菜单及功能。

你可能感兴趣的:(UITextView显示文档的翻页功能)