2017-11-02 11 views
1

私は迅速なプロジェクトがあり、Survey Monkey SDKで作業する必要があります。私は外部フレームワークとして手動でSDKを一度インポートしようとしましたが、もう一度ポッド依存関係を通してインストールしました。しかし、私は迅速なクラスからインポート可能なモジュールとしてSDKにアクセスできませんでした。だから、私はobjc-swiftブリッジヘッダファイルを作成し、フレームワークのクラスにアクセスします。私はアンケートを表示することができます。しかし、ユーザーがアンケートの記入を完了すると、イベントは発生しません。私は- (void)respondentDidEndSurvey:(SMRespondent *)respondent error:(NSError *) error;を実装しましたが、ブロックは実行されていないようです。survey monkey iOS SDK

#import <Foundation/Foundation.h> 
#import <SurveyMonkeyiOSSDK/SurveyMonkeyiOSSDK.h> 
#import "SurveyViewController.h" 
#import "ABC-Swift.h" 

#define SURVEY_HASH @"SSSSSSS" 

@interface SurveyViewController() <SMFeedbackDelegate> 
@property (nonatomic, strong) SMFeedbackViewController * feedbackController; 

@end 

@implementation SurveyViewController 

- (NSArray*)getSurveyResponse { 

    return [NSArray new]; 
} 

- (void)displaySurvey: (UIViewController *)context { 
    _feedbackController = [[SMFeedbackViewController alloc] 
    initWithSurvey:SURVEY_HASH]; 
    _feedbackController.delegate = self; 
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 
    [_feedbackController scheduleInterceptFromViewController:context withAppTitle:SAMPLE_APP]; 
    [_feedbackController presentFromViewController:context animated:YES completion:nil]; 
} 

- (void)respondentDidEndSurvey:(SMRespondent *)respondent error:(NSError *) error { 
if (respondent != nil) { 
    if(respondent.completionStatus == SMCompletionStatusComplete){ 
     NSLog(@"User answered all questions"); 
     //logic goes here 

    } 
    SMQuestionResponse * questionResponse = respondent.questionResponses[0]; 

    NSString * questionID = questionResponse.questionID; 
    if ([questionID isEqualToString:FEEDBACK_QUESTION_ID]) { 
     SMAnswerResponse * answerResponse = questionResponse.answers[0]; 
     NSString * rowID = answerResponse.rowID; 
     if ([rowID isEqualToString:FEEDBACK_FIVE_STARS_ROW_ID] || [rowID isEqualToString:FEEDBACK_FOUR_STARS_ROW_ID]) { 

     } 
     else { 

     } 
    } 
} 
else { 

} 

} 



@end 

私はobjcベースのプロジェクトを作成して同じ機能を試しましたが、期待どおりに動作しました。だから迅速なプロジェクトでは、調査終了時に回答者の回答を得ることができますか?

+0

どのようにdisplaySurvey()を呼び出していますか?私は、SurveyViewControllerがrespondentDidEndSurveyデリゲートメソッドを起動する前に割り当て解除されている可能性があるのだろうかと思います。そうでなければ何が起こっているのかわからない、あなたのコードは私には大丈夫です。ここ – bleiken

+0

は、インタフェースクラスです 'の#import @interfaceのSurveyViewController:NSObjectの - (無効)displaySurvey:(のUIViewController *)コンテキスト。 - (NSArray *)getSurveyResponse; @end' 私は 'displaySurvey()'関数を素早いファイルからアクセスしたいと思っています。この関数の呼び出し元は、調査完了後も表示されたままになるviewControllerです。 – hassicho

答えて

1

@interface SurveyViewControllerクラスがNSObjectに拡張されています。そこで私はUIViewControllerというサブクラスに変更しました。その上に調査サルのビューが表示されます。したがって、delegateメソッドがトリガーされる前に、親ビューは割り当て解除されません。 Thanx @bleikenのヒント。

関連する問題