iOS ゲームに ShareKit を統合しようとしています。
すべてが正常に機能し、アクションシートが表示され、それを操作できますが、共有キットのアクションが終了したときに (アクションシートを閉じるかアクションを終了して)、アプリにフォーカスを戻すことができません。
私はいくつかの方法で試しましたが、どれもうまくいきました。何が起こっていますか?私はプロのプログラマーではないので、何かが欠けていると思います。
私は
これは私の.hです
#import <UIKit/UIKit.h>
#import "SHK.h"
#import "SHKConfiguration.h"
@interface SocialWrapper: UIViewController{
}
- (id) init;
- (void) open;
- (void) dealloc;
@end
そしてM
#import "SocializeWrapper.h"
@implementation SocialWrapper
- (id) init {
self=[super init];
DefaultSHKConfigurator *configurator = [[DefaultSHKConfigurator alloc] init];
[SHKConfiguration sharedInstanceWithConfigurator:configurator];
[SHK flushOfflineQueue];
return self;
}
- (void) open
{
NSString *someText = @"Hello Earth!";
SHKItem *item = [SHKItem text:someText];
// Get the ShareKit action sheet
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[window addSubview:self.view];
[SHK setRootViewController:self];
[actionSheet showInView:self.view];
}
- (void) dealloc {
NSLog(@"SHK dealloc");
[self release];
[super dealloc];
}
@end
このラッパーを使用して呼び出しています
#import "SocializeWrapper.h"
SocialWrapper *socialize;
void SHKinit(void) {
NSLog(@"SHK Init");
socialize = [[SocialWrapper alloc] init];
}
void SHKopenWeb(void){
NSLog(@"SHK Open actionsheet");
[socialize open];
}
私は ios 5、xcode 4.3.2、および git の最新のシェアキット バージョンを使用しています。
アクションシートが閉じられたら、SocialWrapper を却下する必要があると思いますが、そのイベントをキャプチャする方法、またはこれが正しいかどうかさえわかりません。私は立ち往生しています。
どんな助けでも大歓迎です。
アップデート
コメントがアドバイスしたように、コントローラーはカテゴリにあり、アクションシート デリゲートを使用して、キャンセルのアクションシート ボタンをクリックするとフォーカスを取り戻すことができます。アクションが終了またはキャンセルされても、問題は解決しません。そのイベントをキャプチャする方法がわかりません。
これは私のカテゴリコードです:
#import "SocialWrapper.h"
@implementation UIViewController (SocialController)
-(void) loadconfig
{
DefaultSHKConfigurator *configurator = [[DefaultSHKConfigurator alloc] init];
[SHKConfiguration sharedInstanceWithConfigurator:configurator];
[SHK flushOfflineQueue];
}
- (void) open
{
NSLog(@"Opening social button");
NSString *someText = @"Monkey Armada rules!";
SHKItem *item = [SHKItem text:someText];
// Get the ShareKit action sheet
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[window addSubview:self.view];
[actionSheet setDelegate:self];
[SHK setRootViewController:self];
[actionSheet showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"SHK actionsheet dissmiss with button %d", buttonIndex);
if(buttonIndex == 4)
{
NSLog(@"SHK close actionsheet");
[self dismissViewControllerAnimated:YES completion:nil];
[self.view removeFromSuperview];
}
}
@end