[解決済み】プライベートAPIを使用せずに現在のファーストレスポンダーを取得する。
2022-04-17 23:32:19
質問
1週間前にアプリを提出し、今日、恐ろしい拒否のメールが届きました。それは、私が非公開のAPIを使用しているため、私のアプリは受理されないというものです。
あなたのアプリケーションに含まれる非公開APIはfirstResponderです。
さて、問題のAPIコールは、実は私がこのSOで見つけた解決策です。
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
現在のファーストレスポンダーを画面に表示させるには?アプリをリジェクトされない方法を探しています。
どのように解決するのですか?
あるアプリケーションでは、ユーザーが背景をタップした場合、最初のレスポンダが辞任するようにしたいことがよくあります。この目的のために、私はUIViewのカテゴリを書き、私はUIWindow上でそれを呼び出します。
以下はそれに基づいて、最初のレスポンダを返すようにしたものです。
@implementation UIView (FindFirstResponder)
- (id)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.subviews) {
id responder = [subView findFirstResponder];
if (responder) return responder;
}
return nil;
}
@end
iOS 7+
- (id)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.view.subviews) {
if ([subView isFirstResponder]) {
return subView;
}
}
return nil;
}
スウィフト
extension UIView {
var firstResponder: UIView? {
guard !isFirstResponder else { return self }
for subview in subviews {
if let firstResponder = subview.firstResponder {
return firstResponder
}
}
return nil
}
}
Swiftでの使用例です。
if let firstResponder = view.window?.firstResponder {
// do something with `firstResponder`
}
関連
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。
-
[解決済み] アーキテクチャ i386 のシンボルが見つかりませんでした。
-
[解決済み] arc4randomとarc4random_uniformの違いは何ですか?重複
-
[解決済み] Objective-Cのnil、NIL、nullの違いについて
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] iOSで画面の幅と高さを取得する方法は?
-
[解決済み】キーボードを簡単に解除する方法は?
-
[解決済み】Objective-C: パス文字列からファイル名を抽出する
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] どのような場合に@synthesizeを明示的に使用する必要がありますか?
-
[解決済み] クラス 'test_coredataAppDelegate' の重複したインターフェイス宣言
-
[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] クラス vs. #インポート
-
[解決済み】Swiftでキーボードからビューを移動する。
-
[解決済み】iOSで最上位のビューコントローラーを見つける方法
-
[解決済み】UITableViewからセパレータラインを削除する方法はありますか?
-
[解決済み】新しい自動リファレンスカウント機構はどのように機能するのですか?
-
[解決済み] キーボードが入力フィールドを覆ったときだけ、ビューを上に移動させる