質問編集履歴
6
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,9 +36,15 @@
|
|
36
36
|
|
37
37
|
print文で、フォアグラウンドメソッドが呼ばれたら出力されるようにテスト出力してみると、バックグラウンド(ロック状態)の間に再生されたページ分が、フォアグラウンドに戻った時にそのページ分が一気に出力される(呼び出されている)状態です。
|
38
38
|
|
39
|
+
|
40
|
+
|
39
41
|
また、現在表示されているViewControllerを取得してテスト出力してみても同様に数ページ分呼び出されており、黒画面になってしまいます。
|
40
42
|
|
43
|
+
|
44
|
+
|
41
45
|
NotificationCenterでフォアグラウンドメソッドを呼び出すのを、PageViewController.swiftの方に記述すると、該当のページだけ呼び出されているのですが、黒画面になってしまいます。
|
46
|
+
|
47
|
+
|
42
48
|
|
43
49
|
|
44
50
|
|
@@ -96,7 +102,7 @@
|
|
96
102
|
|
97
103
|
// アプリがフォアグラウンドになったことを通知してメソッドを呼び出す
|
98
104
|
|
99
|
-
NotificationCenter.default.addObserver(self, selector: #selector(foregroundMethod), name: NSNotification.Name.UIApplication
|
105
|
+
NotificationCenter.default.addObserver(self, selector: #selector(foregroundMethod), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
|
100
106
|
|
101
107
|
|
102
108
|
|
5
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
また、現在表示されているViewControllerを取得してテスト出力してみても同様に数ページ分呼び出されており、黒画面になってしまいます。
|
40
40
|
|
41
|
-
NotificationCenterでフォアグラウンドメソッドを呼び出すのを、PageViewController.swiftの方に記述すると、該当のページ
|
41
|
+
NotificationCenterでフォアグラウンドメソッドを呼び出すのを、PageViewController.swiftの方に記述すると、該当のページだけ呼び出されているのですが、黒画面になってしまいます。
|
42
42
|
|
43
43
|
|
44
44
|
|
4
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
バックグラウンド(ロック状態)で音再生して
|
1
|
+
バックグラウンド(ロック状態)で音再生してフォアグラウンドに戻った時、Viewが黒画面になってしまいます。
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -7,6 +7,8 @@
|
|
7
7
|
テーブルビューのセルから各ページに遷移でき、遷移先同士をページ移動できるようにページビューコントローラーで制御しています。
|
8
8
|
|
9
9
|
ページ毎に音再生を連続させて、そのページ分が終了したら次のページに自動で遷移して音再生します。
|
10
|
+
|
11
|
+
音楽再生アプリや、歌詞が表示されるアプリの仕様に似たようなものです。
|
10
12
|
|
11
13
|
|
12
14
|
|
@@ -22,7 +24,7 @@
|
|
22
24
|
|
23
25
|
再生と表示ができています。それ以上のページ数を進んでフォアグラウンドに戻ると、黒画面になってしまいます。
|
24
26
|
|
25
|
-
(表示は自動スクロールさせて現在再生中の
|
27
|
+
(表示は自動スクロールさせて現在再生中のアイコンを点灯させています)
|
26
28
|
|
27
29
|
|
28
30
|
|
@@ -30,19 +32,23 @@
|
|
30
32
|
|
31
33
|
<試したことなど>
|
32
34
|
|
33
|
-
コンテンツ用のViewControllerでNotificationCenterを使って
|
35
|
+
コンテンツ用のViewControllerでNotificationCenterを使って、フォアグラウンドメソッドで該当のページを呼び出すようにするとクラッシュしてしまいます。
|
34
36
|
|
35
37
|
print文で、フォアグラウンドメソッドが呼ばれたら出力されるようにテスト出力してみると、バックグラウンド(ロック状態)の間に再生されたページ分が、フォアグラウンドに戻った時にそのページ分が一気に出力される(呼び出されている)状態です。
|
38
|
+
|
39
|
+
また、現在表示されているViewControllerを取得してテスト出力してみても同様に数ページ分呼び出されており、黒画面になってしまいます。
|
36
40
|
|
37
41
|
NotificationCenterでフォアグラウンドメソッドを呼び出すのを、PageViewController.swiftの方に記述すると、該当のページ(最後のページ)だけ呼び出されているのですが、黒画面になってしまいます。
|
38
42
|
|
39
43
|
|
40
44
|
|
41
|
-
フォアグラウンドメソッドでページを呼び出したりしてみましたが、実際はフォアグラウンドに戻った際に
|
45
|
+
フォアグラウンドメソッドでページを呼び出したりしてみましたがうまくいかず、実際はフォアグラウンドに戻った際にページを更新したいのではなく、バックグラウンド再生中の処理の途中状態(現状)を表示させたいのですが(ロック状態ではないバックグラウンドから戻ったときの正しく表示される状態)、うまくいきません。
|
42
46
|
|
43
47
|
|
44
48
|
|
45
|
-
バックグラウンド中のデバック出力を見ると、バックグラウンド再生中の自動ページ送り、自動スクロール(座標移動)などもできているようなのですが、戻った時にそのままの状態で表示させたいのですが、2ページ以上バックグラウンド再生(ロック状態で)すると、黒画面になってしまいます。
|
49
|
+
バックグラウンド中のデバック出力を見ると、バックグラウンド再生中の自動ページ送り、自動スクロール(座標移動)などもできているようなのですが、戻った時にそのままの状態で表示させたいのですが、2ページ以上バックグラウンド再生(ロック状態で)すると、黒画面になってしまいます。
|
50
|
+
|
51
|
+
解決策がありましたら教えて頂けないでしょうか。
|
46
52
|
|
47
53
|
|
48
54
|
|
@@ -152,9 +158,17 @@
|
|
152
158
|
|
153
159
|
userDefaults.set(didBackground, forKey: "didBackground")
|
154
160
|
|
161
|
+
|
162
|
+
|
163
|
+
if (self.isViewLoaded && (self.view.window != nil)) {
|
164
|
+
|
155
|
-
pageCall() // ←ページ呼出メソッドを追加
|
165
|
+
pageCall() // ←ページ呼出メソッドを追加
|
166
|
+
|
167
|
+
}
|
156
168
|
|
157
169
|
}
|
170
|
+
|
171
|
+
|
158
172
|
|
159
173
|
|
160
174
|
|
3
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,17 +18,31 @@
|
|
18
18
|
|
19
19
|
バックグラウンド(ロック状態)からフォアグラウンドに戻るとナビゲーションコントローラー以下のViewが黒画面になってしまいます。この時、ナビゲーションバーの戻るボタンからテーブルビューに戻ることができています。
|
20
20
|
|
21
|
+
バックグラウンド(ロック状態)に入ったページから次のページでフォアグラウンドに戻った場合は、
|
22
|
+
|
23
|
+
再生と表示ができています。それ以上のページ数を進んでフォアグラウンドに戻ると、黒画面になってしまいます。
|
24
|
+
|
25
|
+
(表示は自動スクロールさせて現在再生中のリストのアイコンを点灯させています)
|
26
|
+
|
27
|
+
|
28
|
+
|
21
29
|
|
22
30
|
|
23
31
|
<試したことなど>
|
24
32
|
|
25
|
-
NotificationCenterを使っていて、フォアグラウンドメソッドで該当のページを呼び出すようにするとクラッシュしてしまいます。
|
33
|
+
コンテンツ用のViewControllerでNotificationCenterを使っていて、フォアグラウンドメソッドで該当のページを呼び出すようにするとクラッシュしてしまいます。
|
26
34
|
|
27
|
-
print文で、フォアグラウンドメソッドが呼ばれたら出力されるようにテスト出力してみると、バックグラウンド(ロック状態)の間に再生されたページ分が、フォアグラウンドに戻った時にそのページ分が一気に出力される状態です。
|
35
|
+
print文で、フォアグラウンドメソッドが呼ばれたら出力されるようにテスト出力してみると、バックグラウンド(ロック状態)の間に再生されたページ分が、フォアグラウンドに戻った時にそのページ分が一気に出力される(呼び出されている)状態です。
|
28
36
|
|
29
|
-
|
37
|
+
NotificationCenterでフォアグラウンドメソッドを呼び出すのを、PageViewController.swiftの方に記述すると、該当のページ(最後のページ)だけ呼び出されているのですが、黒画面になってしまいます。
|
30
38
|
|
39
|
+
|
40
|
+
|
31
|
-
|
41
|
+
フォアグラウンドメソッドでページを呼び出したりしてみましたが、実際はフォアグラウンドに戻った際にさせたい処理があるわけではなく、ページを更新したいのでもなく、バックグラウンド再生中の処理の途中状態(現状)を表示させたい(ロック状態ではないバックグラウンドから戻ったときの正しく表示される状態)のですが、うまくいきません。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
バックグラウンド中のデバック出力を見ると、バックグラウンド再生中の自動ページ送り、自動スクロール(座標移動)などもできているようなのですが、戻った時にそのままの状態で表示させたいのですが、2ページ以上バックグラウンド再生(ロック状態で)すると、黒画面になってしまいます。どうすればよいでしょうか?
|
32
46
|
|
33
47
|
|
34
48
|
|
2
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,33 @@
|
|
40
40
|
|
41
41
|
```
|
42
42
|
|
43
|
+
import UIKit
|
44
|
+
|
45
|
+
import AVFoundation
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
class PageContentViewController: UIViewController, UIScrollViewDelegate, AVAudioPlayerDelegate {
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
(略)
|
54
|
+
|
55
|
+
|
56
|
+
|
43
|
-
|
57
|
+
override func viewDidLoad() {
|
58
|
+
|
59
|
+
super.viewDidLoad()
|
60
|
+
|
61
|
+
・
|
62
|
+
|
63
|
+
・
|
64
|
+
|
65
|
+
(略)
|
66
|
+
|
67
|
+
・
|
68
|
+
|
69
|
+
・
|
44
70
|
|
45
71
|
|
46
72
|
|
@@ -52,11 +78,13 @@
|
|
52
78
|
|
53
79
|
NotificationCenter.default.addObserver(self, selector: #selector(foregroundMethod), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
|
54
80
|
|
81
|
+
|
82
|
+
|
83
|
+
}
|
55
84
|
|
56
85
|
|
57
86
|
|
58
87
|
|
59
|
-
// ◆◆◆ ViewDidLoadの外に記述
|
60
88
|
|
61
89
|
|
62
90
|
|
1
コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,7 +26,9 @@
|
|
26
26
|
|
27
27
|
print文で、フォアグラウンドメソッドが呼ばれたら出力されるようにテスト出力してみると、バックグラウンド(ロック状態)の間に再生されたページ分が、フォアグラウンドに戻った時にそのページ分が一気に出力される状態です。
|
28
28
|
|
29
|
-
このことから、フォアグラウンドに戻った時に数ページ分の回数、フォアグラウンドメソッドを呼出しているので、フォアグラウンドメソッド内で該当のページを呼び出すとクラッシュしてしまう
|
29
|
+
このことから、フォアグラウンドに戻った時に数ページ分の回数、フォアグラウンドメソッドを呼出しているので、フォアグラウンドメソッド内で該当のページを呼び出すとクラッシュしてしまうのではないかと推測しています。
|
30
|
+
|
31
|
+
なぜ、まとめて数回呼ばれているのか、フォアグラウンドでさせたい処理はどこに記述すればよいのか?その他の方法など、解決策がありましたら教えて頂けないでしょうか。
|
30
32
|
|
31
33
|
|
32
34
|
|