質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1113閲覧

[Swift] 一部のPDFに対してスワイプ操作が正しく動作しない

lahlah

総合スコア16

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/11/12 10:15

前提・実現したいこと

PDFを表示して、左右のスワイプ操作でページをめくるプログラムを作成しています.

発生している問題・エラーメッセージ

一部のPDFでは、画面を2度タップしてPDFを縮小してからでないとスワイプ操作が機能せず、プログラムを実行した直後に、コンソールに下記のエラーメッセージが出ます.

.notdef: no mapping. (このエラーが多数表示された後、以下のメッセージが出力されます) missing or invalid CIDToGIDMap entry.

エラーメッセージについて調べてみましたが、なかなか参考になるサイトを見つけることが出来ていません. エラーの意味と解決方法について教えていただきたいです.

該当のソースコード

Swift

1import UIKit 2import PDFKit 3 4class ViewController: UIViewController { 5 @IBOutlet weak var pdfView: PDFView! 6 @IBOutlet weak var pdfThumnailView: PDFThumbnailView! 7 8 private var isPDFInit = false 9 10 //PDFのpathを取得 11 var pdfURL: URL? { 12 return Bundle.main.url(forResource: "a", withExtension: "pdf") 13 } 14 15 //PDFView周りの初期化 16 override func viewDidLayoutSubviews() { 17 super.viewDidLayoutSubviews() 18 19 if !self.isPDFInit { 20 self.isPDFInit = true 21 showPDF() 22 } 23 24 } 25 26 //PDFのレイアウトなど 27 private func showPDF(){ 28 guard let url = pdfURL else { 29 print("error") 30 return 31 } 32 let pdfDocument = PDFDocument(url: url) 33 34 pdfView.autoScales = true //画面サイズに収まるように表示 35 pdfView.displayMode = .singlePage //1ページごとに表示 36 pdfView.displayDirection = .horizontal //スクロール方向: 水平 37 pdfView.backgroundColor = UIColor.gray //背景色 38 39 //取得したPDFをdocumentに設定して表示 40 pdfView.document = pdfDocument 41 42 //サムネイル 43 pdfThumnailView.layoutMode = .horizontal 44 pdfThumnailView.pdfView = pdfView 45 } 46 47 48 //次のページへ 49 @IBAction func nextSwipe(_ sender: UISwipeGestureRecognizer) { 50 if pdfView.canGoToNextPage { 51 pdfView.goToNextPage(nil) 52 } 53 print("next") 54 } 55 56 //前のページへ 57 @IBAction func backSwipe(_ sender: UISwipeGestureRecognizer) { 58 if pdfView.canGoToPreviousPage { 59 pdfView.goToPreviousPage(nil) 60 } 61 print("back") 62 } 63 64 override func viewDidLoad() { 65 super.viewDidLoad() 66 // Do any additional setup after loading the view. 67 } 68 69} 70

補足情報(FW/ツールのバージョンなど)

Xcode 11.1, Swift 5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ジェスチャのdelegateを設定すれば、どのPDFに対しても問題なく動作することが分かりました.

Swift

1@IBOutlet var rightswipeGesture: UISwipeGestureRecognizer! 2@IBOutlet var leftswipeGesture: UISwipeGestureRecognizer! 3 4private func showPDF(){ 5 guard let url = pdfURL else { 6 print("error") 7 return 8 } 9 let pdfDocument = PDFDocument(url: url) 10 11 pdfView.autoScales = true //画面サイズに収まるように表示 12 pdfView.displayMode = .singlePage //1ページごとに表示 13 pdfView.displayDirection = .horizontal //スクロール方向: 水平 14 pdfView.backgroundColor = UIColor.gray //背景色 15 16 //取得したPDFをdocumentに設定して表示 17 pdfView.document = pdfDocument 18 19 //サムネイル 20 pdfThumnailView.layoutMode = .horizontal 21 pdfThumnailView.pdfView = pdfView 22 23 //ジェスチャのdelegateを設定 24 rightswipeGesture.delegate = self 25 leftswipeGesture.delegate = self 26}

投稿2021/08/05 05:38

編集2021/08/05 05:42
lahlah

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問