問題タブ [nsnotifications]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1126 参照

iphone - iPhone SDK: キーボードの外観の処理

キーボードが表示されたら、View Controller の UI 要素を移動する必要があります。これを行うには、アプリ デリゲートでキーボード通知を登録します。

[[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];

次に、Apple の規定に従って通知を処理し (キーボード用の同様のコードが表示されました)、ビューを上下にスクロールします。

- (void)keyboardWasHidden:(NSNotification*)aNotification { CGRect viewFrame = [self.view frame]; viewFrame.origin.y += keyboardSize.height - TOOLBAR_HEIGHT; self.view.frame = viewFrame; }

ここまでは順調ですね。今問題の説明:

このコードを実行して OS 3.0 固有のメッセージ UI を表示すると:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; [self presentModalViewController:picker animated:YES];

キーボードが実際のメール UI に表示されている場合でも、ビューをスクロールするキーボード通知が表示されるため、UI が壊れます (メール コントローラーが画面全体を占有し、この時点ではビューが表示されないことに注意してください)。

キーボード通知を一時的に無効にすることを望んでいたため、スクロールコードは次の行で呼び出されません。

[[NSNotificationCenter defaultCenter] removeObserver:self];

しかし、それは役に立ちません。キーボードはまだ投稿されています。

メッセージ UI によって作成されたときにキーボードで反応しないようにするにはどうすればよいですか?

0 投票する
1 に答える
604 参照

cocoa - カップリングなしでNSNotificationを使用するための名前文字列を定義する

アプリでNSNotificationsを使用して、コードを分離します。

通知の名前として文字列を使用するときにコンパイラが助けてくれるようにしたいのです。つまり、文字列を間違って入力した場合は、コンパイラに教えてもらいたいのです。

これに通常の文字列を使用しても機能しません。コンパイラは、入力"myNotificaion"した場合にそれが本当に意味することを認識しないため"myNotification"です。

これを行う1つの方法は、#definesまたはconst NSString変数を使用することですが、これは、元のクラスまたはグローバルに含まれるファイルのいずれかで、ファイルで宣言する必要があることを意味します。

それらが元のクラスで宣言されることの問題は、通知がリッスンされるすべての場所に含まれる必要があるため、私が望まない結合を作成することです。

グローバルファイルの問題は、ファイルが長くて乱雑になる可能性があり、無関係なものがたくさん含まれる可能性があることです。

この結合や乱雑さなしにこれを達成する方法はありますか?

0 投票する
2 に答える
384 参照

objective-c - モデルクラスのUIProgressBarと対話する

Cocoa TouchアプリにMainViewControllerがあり、ビューを含むステータスビューが表示されUIProgressBarます。

MainViewControllerから、FlickrImageモデルオブジェクトが作成され、繰り返されます。FlickrImageオブジェクト自体がFlickrAPIと相互作用するため、時間がかかります。そのため、ユーザーにプログレスバーを表示してもらいたいのです。課題(少なくとも私にとっては;)はprogress、オブジェクトからUIProgressBar(メッセージの送信)を操作することFlickrImageです。を使用してこれを行うのですか、それともMainViewControllerをNSNotificationCenterでフォワードクラスとして宣言FlickrImageし、UIProgressBarと直接対話することができますか?

0 投票する
6 に答える
20842 参照

iphone - NSNotificationCenterと委任(プロトコルを使用)?

それぞれの長所と短所は何ですか?
具体的にどこで使うべきですか?

0 投票する
2 に答える
553 参照

iphone - アプリケーションの通知を登録解除するiPhoneは、なぜ終了しますか?

アプリケーションで通知を登録解除する必要があるのはなぜかといつも思っていましたが、メソッドが終了します。そうしないと気付くことが何も起こらないことを私は知っているので、そうしないことの意味は何ですか?どんな助けでも大歓迎です。

ありがとうございました。

-オスカー

0 投票する
1 に答える
160 参照

iphone - テーブルビューセルからのイベントのリッスン

カスタムの uitableviewcell があります。uitextfield があります。uitextfield キーボードのリターン キーが押されたときに、親のテーブル ビュー コントローラーが動作するようにしたいと思います。アプリ全体のイベント通知を作成せずに、親テーブルビューへの通知を取得するにはどうすればよいですか? それとも、それが最善の方法ですか?

0 投票する
2 に答える
539 参照

iphone - コア データ: 保持せずに維持するにはどうすればよいですか?

iPhone Core Data コードの非常に悪質な問題をデバッグしようとしています。

セットアップは次のとおりです。Webサービスをポーリングし、その結果をNSNotificationメインスレッドに送信するために存在するスレッドがあります(userDict一連の文字列とNSNumbersで渡されます)。メイン スレッドに渡すために、Tim Hatcher の通知ライブラリを使用しています。

メイン スレッドは us​​erDict を受け取り、その値を抽出して新しい管理対象オブジェクトに挿入します。ここまでは順調ですね。

ただし、これで問題が発生しますが、すぐではありません。スレッドがその結果をメイン スレッドに送信し、新しいオブジェクトをコンテキストに保存した後、特定の一連の操作 ( 1 つNSFetchRequestまたは 2 つのリレーションシップの割り当てを含む) を実行できます。EXC_BAD_ACCESSフェッチされた管理対象オブジェクトのプロパティ。

もう 1 つの面白い点は、問題を解決できることです。これを行うには、シングル[userDict retain]をスレッド内に配置してNSNotificationから、メイン スレッドに投稿して管理対象オブジェクトに保存します。NSString受信スレッドで値を受け取るとすぐに新しいオブジェクトを作成して、オブジェクトを互いにファイアウォールで保護しても問題ありません。それがなくてもクラッシュしretainます。

何が得られますか???

0 投票する
1 に答える
1526 参照

objective-c - How to send and receive data along with the event in Objective-C?

I created a program to send and receive events through NSNotification. Now i need to send data along with the event. Can anyone suggest me how to do this in coding in Objective-C??

0 投票する
2 に答える
1048 参照

objective-c - iPhoneObjective-CによるNSNotificationsの配置

私はかなり複雑なiphoneアプリケーションを持っており、多くの非同期プロセスが発生しています。これに対処するために、私はNSNotificationCenterを多用しています。私の質問は、通知を登録するための「ベストプラクティス」とは何ですか?通知を登録するための「ベストプラクティス」は何ですか?今、それらはハザードの方法で私のコードに散らばっています。 up。メインビューのviewDidLoadに「registerNotifications」メソッドを設定して、すべての通知を1回のショットで明らかに登録することについて考えました。これは合理的に聞こえますか?そうでない場合は、これに対処するための好ましい方法を教えてください。よろしくお願いします。 !!

0 投票する
1 に答える
2222 参照

iphone - NSNotification 対デリゲート プロトコル?

基本的にAPIから情報を取得するiPhoneアプリケーションがあります(XMLで、最終的にはJSONである可能性があります)。結果オブジェクトは通常、View Controller (主にテーブル) に表示されます。

これが現在のアーキテクチャです。

リモートサーバーからさまざまなオブジェクトを取得する NSOperation クラスがあります。これらの NSOperation クラスのそれぞれは、解析された結果のオブジェクトを起動するカスタム デリゲート メソッドを受け取り、最後に結果が得られなくなったときにメソッドを受け取ります。したがって、デリゲートのプロトコルは次のようになります。

解決策はうまくいくと思いますが、デリゲート プロトコルがたくさんあることになり、ビュー コントローラーはこれらすべてのデリゲート メソッドを実装する必要があります。悪くはないと思いますが、より良いデザインを常に探しています。

そこで、デリゲートの使用を削除するために NSNotifications を使用することを考えています。通知の userInfo 部分にオブジェクトを含めて、オブジェクトを受信したとおりに投稿し、それ以上利用できない場合は最終イベントを投稿することができます。そうすれば、1 つのコントローラーで複数のオブジェクトを使用する場合でも、各ビュー コントローラーに 1 つのメソッドを配置するだけで、すべてのデータを受け取ることができます。†</p>

それで、誰かが各アプローチの長所/短所を私と共有できますか. デリゲートではなくイベントを使用するようにコードをリファクタリングすることを検討する必要がありますか? 特定の状況では、一方が他方よりも優れていますか? 私のシナリオでは、複数の場所で通知を受け取るつもりはないので、プロトコルベースのデリゲートが適しているかもしれません。

ありがとう!