import UIKit public protocol RDEPUBReaderDelegate: AnyObject { func epubReader(_ reader: UIViewController, didOpen publication: RDEPUBPublication) func epubReader(_ reader: UIViewController, didUpdateLocation location: RDEPUBLocation) func epubReaderDidReachEnd(_ reader: UIViewController) func epubReader(_ reader: UIViewController, didChangeSelection selection: RDEPUBSelection?) func epubReader(_ reader: UIViewController, didUpdateHighlights highlights: [RDEPUBHighlight]) func epubReader(_ reader: UIViewController, didUpdateBookmarks bookmarks: [RDEPUBBookmark]) func epubReader(_ reader: UIViewController, didUpdateSearchResult result: RDEPUBSearchResult?) func epubReader(_ reader: UIViewController, didChangeCurrentSearchMatch match: RDEPUBSearchMatch?) func epubReader(_ reader: UIViewController, didUpdateCurrentTableOfContentsItem item: RDEPUBReaderTableOfContentsItem?) func epubReader(_ reader: UIViewController, didActivateExternalLink url: URL) func epubReader(_ reader: UIViewController, shouldOpenExternalURL url: URL) -> Bool func epubReader(_ reader: UIViewController, didFailWithError error: Error) func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolViewProviding) /// 提供试读墙视图(configuration.trialPolicy 非 nil 时生效)。 /// 返回非 nil 时,阅读器在最后一个可读页之后追加一页展示该视图;返回 nil 则不追加试读墙。 /// 视图的购买 / 登录按钮由宿主自行处理(可在点击后调用 reloadBook() 切换到完整 epub)。 func epubReaderTrialWallView(_ reader: UIViewController) -> UIView? /// 用户翻到试读墙页时回调(宿主可在此触发购买引导 / 埋点等)。 func epubReaderDidReachTrialWall(_ reader: UIViewController) } public extension RDEPUBReaderDelegate { func epubReader(_ reader: UIViewController, didOpen publication: RDEPUBPublication) {} func epubReader(_ reader: UIViewController, didUpdateLocation location: RDEPUBLocation) {} func epubReaderDidReachEnd(_ reader: UIViewController) {} func epubReader(_ reader: UIViewController, didChangeSelection selection: RDEPUBSelection?) {} func epubReader(_ reader: UIViewController, didUpdateHighlights highlights: [RDEPUBHighlight]) {} func epubReader(_ reader: UIViewController, didUpdateBookmarks bookmarks: [RDEPUBBookmark]) {} func epubReader(_ reader: UIViewController, didUpdateSearchResult result: RDEPUBSearchResult?) {} func epubReader(_ reader: UIViewController, didChangeCurrentSearchMatch match: RDEPUBSearchMatch?) {} func epubReader(_ reader: UIViewController, didUpdateCurrentTableOfContentsItem item: RDEPUBReaderTableOfContentsItem?) {} func epubReader(_ reader: UIViewController, didActivateExternalLink url: URL) {} func epubReader(_ reader: UIViewController, shouldOpenExternalURL url: URL) -> Bool { true } func epubReader(_ reader: UIViewController, didFailWithError error: Error) {} func epubReader(_ reader: UIViewController, configureTopToolView topToolView: RDEPUBReaderTopToolViewProviding) {} func epubReaderTrialWallView(_ reader: UIViewController) -> UIView? { nil } func epubReaderDidReachTrialWall(_ reader: UIViewController) {} }