[解決済み] iOSアプリケーションの最上位ビュー/ウィンドウへの参照取得
2023-01-09 22:57:16
質問
iOSアプリケーションで通知を表示するための再利用可能なフレームワークを作成しています。私は、通知ビューが、UIAlertView のような、アプリケーション内の他のすべての上に追加されることを望みます。NSNotificationイベントをリッスンし、それに応じてビューを追加するマネージャを開始するとき、アプリケーションの最上位のビューへの参照を取得する必要があります。これは、私が現時点で持っているものです。
_topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
これはどのiOSアプリケーションでも使えるのでしょうか、それともトップビューを得るためのもっと安全で良い方法があるのでしょうか?
どのように解決するのですか?
通常、これでトップビューを得ることができますが、それがユーザーに見えるという保証はありません。画面外にあったり、アルファ値が 0.0 であったり、サイズが 0x0 であったりする可能性があります。
keyWindow にサブビューがない可能性もあるので、最初にそれをテストする必要があります。これは珍しいことですが、不可能ではありません。
UIWindowはUIViewのサブクラスなので、通知がユーザーに見えることを確認したい場合、keyWindowに直接追加することができます。
addSubview:
を使用すると、即座に最上位のビューになります。しかし、これがあなたが求めていることなのかどうかはわかりません。(質問からすると、すでにご存知のようですが)。
関連
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み] ペン先を読み込んだが、「表示」コンセントが設定されていない
-
[解決済み] アプリケーションは、アプリケーション起動の最後にルートビューコントローラーを持つことが期待される
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】iOSで最上位のビューコントローラーを見つける方法
-
[解決済み] Objective-Cで配列に結合する
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] IOS: 角の丸いUIImageまたはUIImageViewを作成する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] Objective-Cのセレクタ?
-
[解決済み] 2つの日付の差を計算するにはどうすればよいですか?
-
[解決済み] NSLog オーバーライドされた記述方法でのオブジェクトのメモリアドレスの記録
-
[解決済み] NSDictionaryにboolean値を追加するにはどうすればよいですか?
-
[解決済み] ブロックベースのAPIメソッドでnonnullとnullableのObjective-Cキーワードを使用する方法
-
[解決済み] 警告 "format が文字列リテラルでなく、format の引数がない場合"
-
[解決済み] NSNumberのインクリメント方法
-
[解決済み] NSStringの最初の3文字を取得するには?
-
[解決済み] Objective-Cです。NSNotificationのオブザーバを削除するには?