UITextView繼承UIScrollView继阻,在顯示大量文字的時(shí)候,可以通過上下滑動(dòng)進(jìn)行瀏覽。如果有點(diǎn)擊屏幕左右兩邊仿粹,進(jìn)行上一頁或下一頁操作的話搁吓,就需要在UITextView上添加UITapGestureRecognizer。值得注意的是吭历,UITextView的editable屬性要設(shè)置為NO堕仔,否則UITapGestureRecognizer失效。具體點(diǎn)擊后運(yùn)行的代碼如下:
- (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(@"跳轉(zhuǎn)到上一章");
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(@"跳轉(zhuǎn)到下一章");
[self showTheStatusBar];
return;
}
}
else
{
}
self.pageNumLabel.text = [NSString stringWithFormat:@"%ld/%ld",(long)self.currentPage,(long)self.totalPage];
}
self.textView的總頁數(shù)是通過字符串來計(jì)算出self.textView.contentSize.height晌区,除以當(dāng)前屏幕高度獲得的摩骨。
可以在每次翻頁的時(shí)候,在本地記錄self.textView.contentOffset.y的值朗若,再次進(jìn)入閱讀頁面時(shí)恼五,可以直接跳轉(zhuǎn)到已閱讀的位置。
自定義UITextView哭懈,取消顯示選中后系統(tǒng)菜單灾馒,使用UIMenuController實(shí)現(xiàn)需求菜單及功能。