0
因此,我使用基於epub reader app的代碼,並試圖修改它以使滑動手勢工作。我只需要左手和右手手勢就可以向前或向後改變頁面,並且可以檢查epub的結束或開始。我確定了切換頁面的代碼,並將它們附加到調用java腳本的下一個和上一個按鈕函數中來執行此操作。加載java腳本和WKWebView的函數在函數- (void)loadView
函數如下,我的嘗試是*UISwipeGestureRecognizer
聲明已被註釋掉。將滑動手勢添加到epub ios應用程序
- (void)loadView {
self.view = [[UIView alloc] init];
self.view.backgroundColor = [UIColor whiteColor];
// Notifications
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(onEPubSettingsDidChange:)
name:kSDKLauncherEPubSettingsDidChange object:nil];
// Create the web view. The choice of web view type is based on the existence of the WKWebView
// class, but this could be decided some other way.
// The "no optimize" RequireJS option means that the entire "readium-shared-js" folder must be copied in to the OSX app bundle's "scripts" folder! (including "node_modules" subfolder, which is populated when invoking the "npm run prepare" build command) There is therefore some significant filesystem/size overhead, but the benefits are significant too: no need for the WebView to fetch sourcemaps, and to attempt to un-mangle the obfuscated Javascript during debugging.
// However, the recommended development-time pattern is to invoke "npm run build" in order to refresh the "build-output" folder, with the RJS_UGLY environment variable set to "false" or "no". This way, the RequireJS single/multiple bundle(s) will be in readable uncompressed form.
//NSString* readerFileName = @"reader_RequireJS-no-optimize.html";
//NSString* readerFileName = @"reader_RequireJS-multiple-bundles.html";
NSString* readerFileName = @"reader_RequireJS-single-bundle.html";
if ([WKWebView class] != nil) {
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.allowsInlineMediaPlayback = YES;
config.mediaPlaybackRequiresUserAction = NO;
// Configure a "readium" message handler, which is used by host_app_feedback.js.
WKUserContentController *contentController = [[WKUserContentController alloc] init];
[contentController addScriptMessageHandler:self name:@"readium"];
config.userContentController = contentController;
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
m_webViewWK = webView;
webView.hidden = YES;
webView.scrollView.bounces = NO;
webView.allowsBackForwardNavigationGestures = YES;
[self.view addSubview:webView];
// RDPackageResourceConnection looks at corePaths and corePrefixes in the following
// query string to determine what core resources it should provide responses for. Since
// WKWebView can't handle file URLs, the web server must provide these resources.
NSString *url = [NSString stringWithFormat:
@"%@%@?"
@"corePaths=readium-shared-js_all.js,readium-shared-js_all.js.map,epubReadingSystem.js,host_app_feedback.js,sdk.css&"
@"corePrefixes=readium-shared-js",
m_package.rootURL,
readerFileName];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
//attempted swipe gestures, maybe create seperate function not sure if this is the best method
/*UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRightAction:)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
swipeRight.delegate = self.view;
[webView addGestureRecognizer:swipeRight];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftAction:)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.delegate = self.view;
[webView addGestureRecognizer:swipeLeft];/*
}
else {
UIWebView *webView = [[UIWebView alloc] init];
m_webViewUI = webView;
webView.delegate = self;
webView.hidden = YES;
webView.scalesPageToFit = YES;
webView.scrollView.bounces = NO;
webView.allowsInlineMediaPlayback = YES;
webView.mediaPlaybackRequiresUserAction = NO;
[self.view addSubview:webView];
NSURL *url = [[NSBundle mainBundle] URLForResource:readerFileName withExtension:nil];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
//attempted swipe gestures, maybe create seperate function
/*UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRightAction:)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
//swipeRight.delegate = self;
[webView addGestureRecognizer:swipeRight];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftAction:)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
//swipeLeft.delegate = self;
[webView addGestureRecognizer:swipeLeft];*/
}
}
任何幫助將非常感激,我已經請求原始開發人員的幫助,但他們還沒有迴應。我想我會得到別人的意見。
謝謝
哎呀,我無意中錯位了* /所以我的代碼看起來搞砸了。我道歉 –