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实现需求菜单及功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 1,589评论 2 4
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    十年一品温如言1008阅读 1,719评论 0 3
  • 转自:http://www.code4app.com/blog-866962-1317.html1、设置UILab...
    MMOTE阅读 1,671评论 1 1
  • 应该是一个失眠的夜。 坐飞机离开那座城市,回到熟悉的地方,仿佛就是一瞬间的事。其实真的不久,不过一个夜晚而已。 飞...
    南逢酒馆阅读 333评论 0 0
  • 室内温度,我无话可说,还有一床被子,一张毛毯。 川主寺去了没意思,来到松潘,话说这是松赞干布接文成公主入藏经过的地...
    晓宁的话阅读 715评论 0 1