TXT SDK For iOS(1.2.0.0)说明

  1. 简介
  2. 在xcode中集成:
    1. 选择要集成的 targets,切换到 Build Phases 标签。

    2. Link Binary With Libaraies 中添加 TXTSDK.frameworkSecurity.framework

    3. Copy Bundle Resources 中添加 SDKResource.bundle

  3. 具体接口调用流程(Objective-c代码为例)
  4. 调用sdk接口前,需要在app启动时注册sdk,否则sdk不可用。可以通过在线注册开发者账号,获取appKey和appSecret,详情请参考registerSDKWithAppKey函数的注意部分。注册示例代码:

    
    // AppDelegate 回调函数
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [YCANPDFViewController registerSDKWithAppKey:@"5E2FADFEAE365427FFFF041412FE8C5"
            appSecret:@"13C49F0807DF56809E492DEF0CDCD"
            completeHandler:^(NSDictionary *info, NSError *error)
        {
            NSLog(@"info=%@, error=%@", info, error);
        }];
        return YES;
    }
    

    下面的示例程序以在UIViewController中的使用方式为来说明。首先读取TXT文件,得到TXT文本,然后创建TextViewController对象,最后显示TXT页面。由于TextViewController是UIViewController子类,可以像使用普通的UIViewController对象使用TextViewController实例对象。TextViewController包含了阅读TXT的所有基础功能,开发者需要自己设计使用这些功能的界面(如果无需高级定制功能,可使用本公司另一款快速开发阅读器的产品:Reader SDK for iOS)。
    注意: 需要引入头文件 <TXTSDK/TXTSDK.h>。

    NSString *path = // txt file path
                NSData *data = [NSData dataWithContentsOfFile:path];
                // 打开一般中文txt文件时用到的编码
    NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    NSString *text = [[NSString alloc] initWithData:data encoding:encoding];
    if( text == nil ){
        NSLog( @"text 编码未知" );
        return nil;
    }
    
    TextViewController *txt = [TextViewController instanceWithText:text];
    txt.delegate = self;
    txt.bookName = path.lastPathComponent.stringByDeletingPathExtension;
    // 此处添加其他初始化代码...
    
    [self addChildViewController:txt];
    UIView *textView = _txt.view;
    [self.view addSubview:textView];
    [self.view sendSubviewToBack:textView];
    [txt didMoveToParentViewController:self];
    
    ...
    
    // txt 对象不再使用时,需要调用close接口,可能导致程序崩溃。
    [txt close];
    

    在用户阅读过程中,开发者可能需要知道用户的某些阅读行为。为此,开发者可以指定TextViewController对象的delegate 并实现TextViewControllerDelegate协议即可。细节请参考 TextViewControllerDelegate说明

  5. 接口说明
    1. TextViewController类接口
    2. TextViewController 定义如下:(摘自TXTSDK.h)

      @interface TextViewController : UIViewController
                          // register sdk api
      +(void)registerSDKWithAppKey:(NSString*)appKey
          appSecret:(NSString*)appSecret
          completeHandler:(void(^)(NSDictionary* info, NSError *error))completeHandler;
      +(instancetype)instanceWithText:(NSString*)text;
      +(NSString*)version;
      -(void)close;
      -(void)gotoOffest:(NSUInteger)offset animate:(BOOL)animate;
      -(void)update;
      -(void)searchWithKeyword:(NSString*)keyword;
      -(void)searchMoreResules;
      -(void)showSearResultWithSearchItem:(TextSearchItem*)searchItem;
      -(void)searchNext;
      -(void)searchPrev;
      -(void)cancelSearchWithFinishHandle:(void(^)(NSString* keyword))finishHandle;
      @property (nonatomic, strong, readonly) NSArray<TextSearchItem*>* searchResultArray;
      @property (nonatomic, assign, readonly) BOOL isSearching;
      @property (nonatomic, assign) id<TextViewControllerDelegate> delegate;
      @property (nonatomic, strong) NSString *bookName;
      @property (nonatomic, strong) UIFont *font;
      @property (nonatomic, strong) UIColor *textColor;
      @property (nonatomic, strong) UIColor *textBkgndColor;
      @property (nonatomic, assign) CGFloat lineSpacing;
      @property (nonatomic, assign) BOOL isNightMode;
      @property (nonatomic, assign) TxtPageFlipMode pageFlipMode;
      @property (nonatomic, strong) NSMutableArray<TextAnnotItem*> *annotArray;
      @property (nonatomic, strong, readonly) NSString *text;
      @property (nonatomic, strong, readonly) NSArray<TextOutlineItem*>* outlineArray;
      @property (nonatomic, assign, readonly) NSRange currentPageRange;
      @property (nonatomic, assign, readonly) NSUInteger currentPageNum;
      @property (nonatomic, assign, readonly) NSUInteger pageCount;
      @end
      

      接口详细说明:

      1. +(void)registerSDKWithAppKey:(NSString*)appKey appSecret:(NSString*)appSecret completeHandler:(void(^)(NSDictionary* info, NSError *error))completeHandler;
        • 功能:
        • 注册sdk。

        • 参数:
        • appKey 注册账号后得到的字符串(App Key)。

          appSecret 注册账号后得到的字符串(App Secret)。

          completeHandler 可以为nil,注册完成后调用。

        • 返回值:
        • 无。

        • 注意:
          • 开发者账号登陆/注册网址http://sdk.ycanpdf.com
          • 注册开发者账号时请注意:填写的 Bundle ID 必须要与 app 的 Bundle ID 一致。
          • app Bundle ID 获取方法:
            1. 选中app target
            2. 切换到 General标签。
            3. 展开IdentifyBundle Identifier 的值就是要填的 Bundle ID
          • 调用方式和时机,请参考:注册SDK代码示例

      2. +(instancetype)instanceWithText:(NSString*)text;
        • 功能:
        • 获取TextViewController类对象。

        • 参数:
        • text txt文本。

        • 返回值:
        • 成功返回TextViewController对象,失败返回 nil。只要text.length不为0,返回值将不为nil。

        • 注意:
        • 此接口是唯一获取TextViewController对象的接口,请不要使用其他UIVeiewController类获取对象的接口,否则得到的对象的所有行为是未定义的。


      3. +(NSString*)version;
        • 功能:
        • 返回SDK版本号。

        • 参数:
        • 无。

        • 返回值:
        • SDK版本号, 如:1.0.0.0。


      4. -(void)close;
        • 功能:
        • 停止所有可能的后台异步计算。

        • 参数:
        • 无。

        • 返回值:
        • 无。

        • 注意:
        • 如果TextViewController对象不再使用,请调用close接口,以停止可能存在的后台异步计算,否则可能引起程序崩溃。


      5. -(void)gotoOffest:(NSUInteger)offset animate:(BOOL)animate;
        • 功能:
        • 跳转到某页页面。

        • 参数:
        • offset 指定跳转到某页面偏移量,起始页偏移量为0。

          animate 是否有翻页动画,YES为有,反之为无。

        • 返回值:
        • 无。

        • 注意:
        • txt没有页码的概念,随着txt字体大小,行间距等的动态改变,相同的页码中的文字内容可能完全不同,比如说同样是第10页,文字变小后,新的第10页的内容可能是原来第15-16页的内容,使用偏移量可避免这种情况。


      6. -(void)update;
        • 功能:
        • 刷新页面。

        • 参数:
        • 无。

        • 返回值:
        • 无。

        • 注意:
        • 此接口将强制SDK调用某些delegate回掉函数。


      7. -(void)searchWithKeyword:(NSString*)keyword;
        • 功能:
        • 启动后台搜索功能。

        • 参数:
        • keyword 指定搜索关键字。

        • 返回值:
        • 无。


      8. -(void)searchMoreResules;
        • 功能:
        • 通知后台搜索更多的结果。

        • 参数:
        • 无。

        • 返回值:

      9. -(void)showSearResultWithSearchItem:(TextSearchItem*)searchItem;
        • 功能:
        • 显示搜到的某一项结果。

        • 参数:
        • searchItem searchResultArray中的对象。

        • 返回值:
        • 无。

        • 注意:
        • 调用后,TextViewController对象将会以图形方式显示搜索结果所在页面的具体位置,然后 searchNextsearchPrev 才可用。


      10. -(void)searchNext;
        • 功能:
        • 在页面上显示下一个搜索结果的具体位置。

        • 参数:
        • 无。

        • 返回值:
        • 无。


      11. -(void)searchPrev;
        • 功能:
        • 在页面上显示上一个搜索结果的具体位置。

        • 参数:
        • 无。

        • 返回值:
        • 无。


      12. -(void)cancelSearchWithFinishHandle:(void(^)(NSString* keyword))finishHandle;
        • 功能:
        • 取消搜索,调用后页面搜索结果标将消失,后台搜索将停止,并清空searchResultArray

        • 参数:
        • finishHandle 后台搜索停止时,将会执行,可以为nil。

        • 返回值:
        • 无。

        • 注意:
        • cancelSearchWithFinishHandle: 接口调用后,后台搜索不会立即停止,是异步的,为了某些避免意外情况,后台搜索在停止时,会调用finishHandle代码块。


      13. @property (nonatomic, strong, readonly) NSArray<TextSearchItem*>* searchResultArray;
        • 功能:
        • 返回后台搜索的结果列表。列表内容请参考:TextSearchItem


      14. @property (nonatomic, assign, readonly) BOOL isSearching;
        • 功能:
        • 指示后台搜索是否正在执行。

        • 注意:
        • 后台搜索只能一次执行一个关键字搜索,而不能同时执行多个关键字搜索。


      15. @property (nonatomic, assign) id<TextViewControllerDelegate> delegate;
        • 功能:
        • 指定委托对象。

        • 注意:
        • TextViewController对象的所有通知,都是通过此对象通知的,遵循TextViewControllerDelegate协议,详情请参考:TextViewControllerDelegate说明, 可以为nil。


      16. @property (nonatomic, strong) NSString *bookName;
        • 功能:
        • 指定TXT书名。

        • 注意:
        • TextViewController在显示TXT页面时,页面的左上角可能会用到。 可以为nil。


      17. @property (nonatomic, strong) UIFont *font;
        • 功能:
        • 获取/设定TXT字体。

        • 注意:
        • font发生改时,页面会立刻自动显示所作的更改。


      18. @property (nonatomic, strong) UIColor *textColor;
        • 功能:
        • 获取/设定TXT文字颜色。

        • 注意:
        • textColor发生改时,页面会立刻自动显示所作的更改。


      19. @property (nonatomic, strong) UIColor *textBkgndColor;
        • 功能:
        • 获取/设定TXT背景色。

        • 注意:
        • textBkgndColor发生改时,页面会立刻自动显示所作的更改。


      20. @property (nonatomic, assign) CGFloat lineSpacing;
        • 功能:
        • 获取/设定TXT行间距,取值0-50。

        • 注意:
        • lineSpacing发生改时,页面会立刻自动显示所作的更改。


      21. @property (nonatomic, assign) BOOL isNightMode;
        • 功能:
        • 设置页面是否为夜间模式。

        • 注意:
        • isNightMode值为YES时,页面会立刻以夜间模式显示;为NO时,页面会立刻以非夜间模式显示。


      22. @property (nonatomic, assign) TxtPageFlipMode pageFlipMode;
        • 功能:
        • 设置/获取翻页方式。


      23. @property (nonatomic, strong) NSMutableArray<TextAnnotItem*> *annotArray;
        • 功能:
        • 设置/获取注释列表。


      24. @property (nonatomic, strong, readonly) NSString *text
        • 功能:
        • 获取整个txt文本。


      25. -(NSArray<TextOutlineItem*>*)outlineArray;
        • 功能:
        • 获取TXT目录。

        • 注意:
        • TextOutlineItem数组,详情请参考:TextOutlineItem。 由于TXT目录是非标准的,不同的TXT文件,提取的规则可能有很大差异,如果内置的提取算法,无法满足开发着的要求,开发者可通过TextViewControllerDelegate自己实现,详情请参考: outlineArrayForTextViewController:


      26. @property (nonatomic, assign, readonly) NSRange currentPageRange;
        • 功能:
        • 获取当前正在显示的TXT页面范围。

        • 注意:
        • currentPageRange是唯一精确确定TXT页面位置的方法。


      27. @property (nonatomic, assign, readonly) NSUInteger currentPageNum;
        • 功能:
        • 获取当前页的页码。

        • 注意:
        • currentPageNum 是一个临时值,TXT刚打开时TextViewController进行后台分页,在没分页完成之前,currentPageNum 一直是0。在阅读期间,如果用户改变了字体大小,行间距等,都会引起后台分页动作,在未完成分页前,currentPageNum 一直是0。后台分页的执行情况可通过TextViewControllerDelegate获得。详情请参考: txtPreparePaging: txtStartPaging: txt:pagingAtRange: txtEndPaging: txtPagingIsCanceled:


      28. @property (nonatomic, assign, readonly) NSUInteger pageCount;
        • 功能:
        • 获取TXT分页后的总页数。

    3. TextViewControllerDelegate
    4. TextViewControllerDelegate 定义如下:(摘自TXTSDK.h)。

      @class TextViewController;
      @protocol TextViewControllerDelegate <NSObject>
      @optional
      // page delegate
      // 当pageNum==0 表示pageNum无效,原因是后台还未完成分页。
      -(void)txtMayDoTransition:(TextViewController*)txt;
      -(void)txt:(TextViewController*)txt didTransitionToPageNum:(NSUInteger)pageNum pageRange:(NSRange)r;
      -(BOOL)txt:(TextViewController*)txt canShowBookmarkAtRange:(NSRange)r;
      -(void)txt:(TextViewController *)txt bookmarkDidClickedAtPageRange:(NSRange)r;
      -(NSUInteger)textOffsetForInitTxt:(TextViewController*)txt;
      
      // 若默认的目录提取算法无法满足你的需求,可通过定义此函数来自定义txt目录提取算法
      -(NSArray<TextOutlineItem*>*)outlineArrayForTextViewController:(TextViewController*)txt;
      
      // search list
      -(void)txt:(TextViewController*)txt hasSearchedMoreResultsByKeyword:(NSString*)keyword;
      -(void)txt:(TextViewController*)txt canNotSearchMoreResultsByKeyWord:(NSString *)keyword;
      
      // search delegate
      -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword willEnterBackgroundAtPageRange:(NSRange)r;
      -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword atPageRange:(NSRange)r;
      -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword isSearched:(BOOL)isSearched;
      
      // paging delegate
      // prepare->start->[n*paging]->end/cancel
      -(void)txtPreparePaging:(TextViewController *)txt;
      -(void)txtStartPaging:(TextViewController *)txt;
      -(void)txt:(TextViewController *)txt pagingAtRange:(NSRange)r;
      -(void)txtEndPaging:(TextViewController *)txt;
      -(void)txtPagingIsCanceled:(TextViewController *)txt;
      
      // annot delegate
      -(BOOL)txt:(TextViewController*)txt canCopyRange:(NSRange)r;
      -(BOOL)txt:(TextViewController*)txt canAddTextAnnotType:(TextAnnotType)type atRange:(NSRange)r;
      -(BOOL)txt:(TextViewController*)txt canRemoveTextAnnotItem:(TextAnnotItem*)annotItem;
      -(BOOL)txt:(TextViewController*)txt canShareTextAnnotItem:(TextAnnotItem*)annotItem;
      -(void)txt:(TextViewController*)txt shareTextAnnotItem:(TextAnnotItem*)annotItem;
      -(void)txt:(TextViewController*)txt didAddTextAnnotItem:(TextAnnotItem*)annotItem;
      -(void)txt:(TextViewController*)txt didRemoveTextAnnotItem:(TextAnnotItem*)annotItem;
      -(void)txt:(TextViewController*)txt didTextAnnotNoteChange:(TextAnnotItem*)annotItem;
      -(void)txt:(TextViewController *)txt didTextAnnotItemColorChange:(TextAnnotItem *)annotItem;
      @end
      

      协议接口详细说明:

      1. -(void)txtMayDoTransition:(TextViewController*)txt;
        • 说明:
        • 用户有翻页动作时触发调用。


      2. -(void)txt:(TextViewController*)txt didTransitionToPageNum:(NSUInteger)pageNum pageRange:(NSRange)r;
        • 说明:
        • 用户翻页后触发调用,如果分页未完成,pageNum的值一直为0。


      3. -(BOOL)txt:(TextViewController*)txt canShowBookmarkAtRange:(NSRange)r;
        • 说明:
        • 渲染页面时会调用,若返回YES,r范围所在页将会显示书签,若返回NO,则不会显示书签。


      4. -(void)txt:(TextViewController *)txt bookmarkDidClickedAtPageRange:(NSRange)r;
        • 说明:
        • 用户点到页面上的书签时调用。


      5. -(NSUInteger)textOffsetForInitTxt:(TextViewController*)txt;
        • 说明:
        • 打开TXT文件时调用,询问最先显示TXT偏移位置。例如返回1000,TextViewController最先渲染并显示包含1000位置字符的页面;可以不实现,从而默认最先显示包含0位置字符的页面。


      6. -(NSArray*)outlineArrayForTextViewController:(TextViewController*)txt;
        • 说明:
        • 用于自定义提取txt目录的方法。如果实现此接口,TextViewController将不执行默认的目录提取算法。outlineArray返回此接口返回的结果;如果不实现,TextViewController将执行默认的目录提取算法,outlineArray会返回默认算法的结果。


      7. -(void)txt:(TextViewController*)txt hasSearchedMoreResultsByKeyword:(NSString*)keyword;

      8. -(void)txt:(TextViewController*)txt canNotSearchMoreResultsByKeyWord:(NSString *)keyword;

      9. -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword willEnterBackgroundAtPageRange:(NSRange)r;
        • 说明:
        • 进入后台搜索时调用。可以不实现,详情请参考:searchNextsearchPrev


      10. -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword atPageRange:(NSRange)r;
        • 说明:
        • 后台搜索过程中会调用。可以不实现,详情请参考:searchNextsearchPrev


      11. -(void)txt:(TextViewController*)txt searchKeyword:(NSString*)keyword isSearched:(BOOL)isSearched;
        • 说明:
        • 后台搜索暂停时调用,参数isSearched指示出搜索暂停的原因,若为YES,表示搜到了结果。若为NO,表示已经搜到了文件头或文件尾,无法继续执行搜索了。可以不实现,详情请参考:searchNextsearchPrev


      12. -(void)txtPreparePaging:(TextViewController *)txt;
        • 说明:
        • 后台分页时,触发调用。提示后台线程开始准备分页。


      13. -(void)txtStartPaging:(TextViewController *)txt;
        • 说明:
        • 提示后台线程已经完成准备工作,开始分页了。


      14. -(void)txt:(TextViewController *)txt pagingAtRange:(NSRange)r;
        • 说明:
        • 提示后台线程分页的位置。每分完一页,调用一次。


      15. -(void)txtEndPaging:(TextViewController *)txt;
        • 说明:
        • 提示后台线程分页完成。


      16. -(void)txtPagingIsCanceled:(TextViewController *)txt;
        • 说明:
        • 提示后台线程分页被取消,取消的原因是,新的分页被触发,当前分页已无意义;TextViewController对象一次只能执行一个分页任务,不能同时执行多个分页任务。


      17. -(BOOL)txt:(TextViewController*)txt canCopyRange:(NSRange)r;
        • 说明:
        • 弹出菜单前调用,若返回NO,弹出的菜单将没有复制选项,反之则有。r范围是相对text的。


      18. -(BOOL)txt:(TextViewController*)txt canAddTextAnnotType:(TextAnnotType)type atRange:(NSRange)r;
        • 说明:
        • 弹出菜单前调用,若返回NO,弹出的菜单将没有对应的注释类型选项,反之则有。r范围是相对text的。


      19. -(BOOL)txt:(TextViewController*)txt canRemoveTextAnnotItem:(TextAnnotItem*)annotItem;
        • 说明:
        • 弹出菜单前调用,若返回NO,弹出的菜单将没有删除注释的选项,反之则有。

      20. -(BOOL)txt:(TextViewController*)txt canShareTextAnnotItem:(TextAnnotItem*)annotItem;
        • 说明:
        • 弹出菜单前调用,若返回NO,弹出的菜单将没有分享注释的选项。反之则有。


      21. -(void)txt:(TextViewController*)txt shareTextAnnotItem:(TextAnnotItem*)annotItem;
        • 说明:
        • 用户点击了分享菜单命令时调用,通知执行分享注释操作。


      22. -(void)txt:(TextViewController*)txt didAddTextAnnotItem:(TextAnnotItem*)annotItem;
        • 说明:
        • 用户添加注释时调用,通知删除注释操作。注意:TextViewController会自动维护annotArray


      23. -(void)txt:(TextViewController*)txt didRemoveTextAnnotItem:(TextAnnotItem*)annotItem;
        • 说明:
        • 用户删除注释时调用,通知删除注释操作。注意:TextViewController会自动维护annotArray


      24. -(void)txt:(TextViewController*)txt didTextAnnotNoteChange:(TextAnnotItem*)annotItem;
        • 说明:
        • 用户修改注释笔记时调用,通知修改注释操作。注意:TextViewController会自动维护annotArray


      25. -(void)txt:(TextViewController *)txt didTextAnnotItemColorChange:(TextAnnotItem *)annotItem;
        • 说明:
        • 用户修改注释颜色时调用,通知修改注释操作。注意:TextViewController会自动维护annotArray

  6. 结构定义

    1. TxtPageFlipMode(摘自TXTSDK.h)
    2. typedef NS_ENUM(NSUInteger, TxtPageFlipMode) {
          txt_page_flip_mode_none,           // 简洁(无)
          txt_page_flip_mode_simulation,     // 仿真
          txt_page_flip_mode_slide           // 滑动
      };
      

    3. TextAnnotType(摘自TXTSDK.h)
    4. typedef NS_ENUM(NSUInteger, TextAnnotType) {
          TextAnnotTypeSolidUnderline, // 实线下划线
          TextAnnotTypeWaveUnderline,  // 波浪下划线
          TextAnnotTypeDashUnderline,  // 虚线下划线
          TextAnnotTypeHeighlight      // 高亮
      };
      

    5. TextAnnotItem(摘自TXTSDK.h)
    6. // TextAnnotItem
      // 用于表示一个注释对象
      ///////////////////////////////////////////////////
      ///////////////////////////////////////////////////
      @interface TextAnnotItem : NSObject
      @property (nonatomic, assign) TextAnnotType type;    // 注释类型,支持高亮和下划线
      @property (nonatomic, assign) NSInteger ID;        // 本地注释id
      @property (nonatomic, assign) NSInteger annotID;   // 服务器注释id
      @property (nonatomic, strong) NSDate *addTime;      // 注释添加时间
      @property (nonatomic, strong) NSString *userNote;   // 用户笔记
      @property (nonatomic, strong) NSString *text;       // 注释包涵的文字
      @property (nonatomic, assign) NSInteger startIndex; // 起始文字索引
      @property (nonatomic, assign) NSInteger endIndex;   // 结束文字索引
      @property (nonatomic, assign) NSInteger argbAlpha;  // argb alpha(0-255)
      @property (nonatomic, assign) NSInteger argbRed;    // argb red(0-255)
      @property (nonatomic, assign) NSInteger argbGreen;  // argb green(0-255)
      @property (nonatomic, assign) NSInteger argbBlue;   // argb blue(0-255)
      // 以下属性在(type=下划线)下才有效
      @property (nonatomic, assign) NSInteger lineWidth;  // 线条宽
      @end
      

    7. TextOutlineItem(摘自TXTSDK.h)
    8. @interface TextOutlineItem : NSObject
      @property (nonatomic, strong) NSString *title;      // 目录标题
      @property (nonatomic, assign) NSRange range;        // 目录项所代表的范围
      @property (nonatomic, assign) NSUInteger level;     // 目录项的层次,从0开始
      @end
      

    9. TextSearchItem(摘自TXTSDK.h)
    10. //TextSearchItem
      ////////////////////////////////////////////////////
      ////////////////////////////////////////////////////
      @interface TextSearchItem : NSObject
      @property (nonatomic, strong) NSString *text;           // 包含搜索关键字的文本
      @property (nonatomic, assign) NSRange keywordRange;     // text中,关键字所在的位置
      @property (nonatomic, assign) NSUInteger page;          // 搜索所在页
      @property (nonatomic, assign) NSRange pageRange;        // 所在页的范围
      @property (nonatomic, strong) id context;               // 与搜索有关的内部信息,请勿做任何改动
      @end
      



2017/6/21

优看科技

QQ:329969959

http://www.ycanpdf.cn