2011-12-20 5 views
-2

...UILocalNotificationをサブクラス化し、デフォルトの "閉じる"ボタンのテキストとメソッドを変更することはできますか? <strong>UILocalNotification</strong>の<strong>「閉じる」</strong>ボタンのテキスト/機能を変更する方法を探し

私はそれがアクセス不可能 /テキストを呼び出す/機能は、他のオブジェクトからだということがわかりました、サブクラス化 UILocalNotificationが「閉じる」ボタンテキストフィールドを設定し取得するためのアクセサ /の作成を言及しないように...をオーバーライドする実装方法を許可するべきです。

あなたはどう思いますか? アップルとは何ですか? ?2011年12月21日12:01

私が求めている問題は、OOPの理解が含まれます:結合初期/後期

は、誰もが...

EDITを試みました、動的メソッドの参照、および宣言された型と実行時の型のフィールドとメソッドの処理。

UILocalNotification のサブクラスは仕事...

UILocalNotificationExampleSubclass * example = [UILocalNotificationExampleSubclass init];

を行い...とデバイスはタイプUILocalNotificationないUILocalNotificationExampleSubclassで、しかし、オブジェクトをを作成しません。

私はUILocalNotification.mファイルのメソッドについての洞察を探しています。私たちは、画面に表示さ

それはは、独自のメソッドを持っていない、どのようなオブジェクト(名称ください)は、UILocalNotificationのインスタンスをとり、そのフィールドを使用して、オブジェクトが表示された場合(名前ください)

答えて

9

UILocalNotificationは通知の情報のためのストレージです。それは何もしません。

さらに、アプリケーションは通知を表示しません。もう1つのプロセスがあります。したがって、サブクラス化UILocalNotificationは役に立たないだけです。 12月22日で

EDIT、17時53分UTC + 1:

はい、あなたはUILocalNotificationをサブクラス化することができます。しかし、UILocalNotificationは抽象クラスであり、そのプロパティは実装されていません。 allocメソッドはオーバーライドされ、UILocalNotificationのインスタンス(プライベートサブクラス)を返します。そのため、UILocalNotificationExampleSubclassをインスタンス化できません。あなたはすぐに-[UIApplication presentLocalNotification:]、オペレーティングシステムコピー通知を使用して通知を-[UIApplication scheduleLocalNotification:]を使用して通知をスケジュールするか、提示したときので

しかし、まだは、UILocalNotificationをサブクラス化することがポイントではありません。

このコピーは、システムによって管理される別のプロセスに格納されます。このプロセスは、独自のプライベートストレージメカニズムを使用します。 UILocalNotificationは、シリアル化されてアプリケーションからオペレーティングシステムに送信されることを予定している一連のプロパティのためのストレージに過ぎません。

ここでは、予定されているすべてのローカル通知を保存し、通知が送信されるのを待っている他のプロセスがあります。それが起こると、そのプロセスはアプリケーションがフォアグラウンドにあるかどうかをチェックします。

  • アプリケーションがフォアグラウンドにない場合、完全にコントロール外のプロセスがアラートを作成し、通知を表示します。 UILocalNotificationクラスのプロパティを使用する以外は、アラートをカスタマイズすることはできません。
  • アプリケーションがフォアグラウンドにある場合、通知はアプリケーションに返され、UILocalNotificationの新しいインスタンスが作成されます。次に、UIApplication共有インスタンスはdelegateプロパティにアクセスし、その代理人がapplication:didReceiveLocalNotification:を実装しているかどうかを確認します。表示されている場合は、通知を返し、その通知で任意の操作を実行できます。たとえば、アラートビューを使用して通知を表示することを選択できます。設定とアラートビューを表示

は次のように行うことができます。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    UIAlertView *alertView = 
    [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert", nil) 
           message:NSLocalizedString(notification.alertBody, nil) 
           delegate:nil 
        cancelButtonTitle:nil 
        otherButtonTitles:NSLocalizedString(@"OK", nil), nil]; 
    [alertView show]; 
    [alertView release]; // unless your project uses Automatic Reference Counting 
} 

私はこの長い応答はあなたの質問、 私が言っていることは真である場合にお答えしました願っています。

+0

*もしあなたが言っていることが真実なら... * 私たちが画面に表示されるアラートを構築するために、どのクラスが 'UILocalNotification'のインスタンスを取るか知っていますか?私はあなたにいくつかの知識をお願いします。 Appleが公開するクラス参照外の事実を探しています。 –

+0

アプリケーションがフォアグラウンドにある場合、 'UIApplication'のデリゲートは' application:didReceiveLocalNotification: 'を実装し、カスタムアラートビューを表示できます。アプリケーションがバックグラウンドにある(または実行されていない)場合は、アラートが表示され、閉じるボタンの名前を変更することはできません。 –

+0

迅速な対応をありがとうございますが、私の質問には答えません。 –

関連する問題