0

あいまいな質問については申し訳ありませんが、コードの何が問題になっているのかわからないため、具体的にする方法がわかりません。あなたたちはおそらくそれらのエラーが何を意味するのかすぐにわかるでしょう。

アプリの起動時にオーバーレイ画像を表示してから、タップジェスチャでオーバーレイを表示しようとしています。私はこれを機能させることができません。別のSO質問からコードを取得しました(リンク:クリックスルーオーバーレイ命令ビューの作成)。私がここで見逃しているアイデアはありますか?私のコードは私が受け取るエラーメッセージを示しています(2つのエラー、1つの警告)。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIImageView *overlay = [[UIImageView alloc]
                            initWithImage:[UIImage imageNamed:@"overlayImg.png"]];
    [self.window addSubview:overlay];

    UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    recognizer.delegate = self; //WARNING: Assigning to 'id<UIGestureRecognizerDelegate>'from incompatible type 'AppDelegate *const__strong'
    [overlay addGestureRecognizer:recognizer];
    overlay.userInteractionEnabled =  YES;
    self.overlay = overlay; //ERROR: Property 'overlay' not found on object of type 'AppDelegate *'
    // Override point for customization after application launch.
    return YES;
}

- (void) handleTap:(UITapGestureRecognizer *)recognizer
{
    [self.overlay removeFromSuperView]; //ERROR: Property 'overlay' not found on object of type 'AppDelegate *'
}
4

1 に答える 1

1

あなたはラインをエーテル除去することができます

recognizer.delegate = self;

またはデリゲートを実装します。これをAppDelegate.mの上部に追加して、警告を取り除きます。

@interface AppDelegate () <UIGestureRecognizerDelegate>

@end

UIImageViewそして、あなたはその財産を失っているようです。移動して、上記のインターフェース拡張機能にプロパティを追加します。これは次のようになります。

@interface AppDelegate () <UIGestureRecognizerDelegate>
@property (nonatomic, strong) UIImageView *overlay;
@end
于 2012-12-18T16:50:31.680 に答える