0

NSUserActivity を使用して HandOff を実装しました。最初に次のメソッドを ViewController クラスに直接実装しましたが、すべて期待どおりに動作しています。

-(void)updateUserActivityState:(NSUserActivity *)userActivity
-(void)restoreUserActivityState:(NSUserActivity *)activity
-(void)userActivityWasContinued:(NSUserActivity *)userActivity

いくつかのアクティビティ タイプを実装することを計画しているので、同様のコードを複製する代わりに、これらのメソッドを実装する別のクラスを作成すると便利だと思いました。これを HandOffClass と呼びましょう。このクラスは、NSUserActivity を正常に作成し、それを特定の ViewController の UserActivity プロパティに割り当てています。これはほとんど機能しますが、上記のメソッドのうち 2 つは UIResponder によって実装され、HandOffClass に含まれている場合は呼び出されません。ViewController に直接実装されている場合、すべてが期待どおりに機能します。

-(void)updateUserActivityState:(NSUserActivity *)userActivity
-(void)restoreUserActivityState:(NSUserActivity *)activity

だから私の問題は、UIResponderメソッドを実装/サブクラス化する方法を理解していないことです

@interface HandOffClass : UIResponder  <NSUserActivityDelegate> 

私のアプローチは正しいですか、それともこれにアプローチするより良い方法はありますか?私の HandOffClass はレスポンダーチェーンに含まれていないと思いますか?

助けや指導をありがとう。

4

1 に答える 1

0

そのオブジェクトをレスポンダー チェーンに挿入したい場合があるので、正しい軌道に乗っています。

このようなことを試してください:

id nextResponder = [self nextResponder];
[self setNextResponder: _myCoolHandOffClass];
[_myCoolHandOffClass setNextResponder: nextResponder];

削除することを忘れないでください。

または、これらの「HandOffClasses」を使用してロジックを含め、ViewController クラスから呼び出すだけです。このようにして、ボイラー プレート (レスポンダー チェーンへの追加と削除) が少し少なくなり、何もしなくてもイベントが ViewController によって処理される可能性があるという欠点があります。

于 2014-11-18T22:43:49.610 に答える