0

我按照这里的指南弹出我自己的自定义视图以表明我正在搜索用户结果:http: //joris.kluivers.nl/blog/2012/03/02/custom-popups-revisited/

找到搜索结果后,我关闭自定义视图,立即弹出一个 Flurry 广告。我点击广告上的 x 按钮,然后我的下一个视图出现。此视图不再接收任何触摸事件,底部的标签栏也不起作用。我怀疑当 Flurry 广告出现时,它必须对自定义视图进行动画处理(通过转换为 0.0f),但我不确定。我包括了如何创建微调器以及解雇的代码。

注意:我已确认该问题与我的 customSpinner 消失时以模态方式显示的 Flurry 广告有关。我不知道如何解决它。当我不显示广告时,触摸事件注册良好。

PCFFinder.c

- (void)queryServer:(NSString *)queryString  {
    __block PCFCustomSpinner *spinner = [[PCFCustomSpinner alloc] initWithFrame:CGRectMake(0, 0, 200, 200):@"Searching.."];
    [spinner show];
    NSString *url = @"https://selfservice.mypurdue.purdue.edu/prod/bwckschd.p_get_crse_unsec";
    NSString *referer = @"https://selfservice.mypurdue.purdue.edu/prod/bwckgens.p_proc_term_date";
    dispatch_queue_t task = dispatch_queue_create("Task 3", nil);
    dispatch_async(task, ^{
        NSString *webData = [PCFWebModel queryServer:url connectionType:@"POST" referer:referer arguements:queryString];
        if (webData) {
            classesOffered = [PCFWebModel parseData:webData type:2];
            dispatch_async(dispatch_get_main_queue(), ^{
                [spinner dismiss];
                spinner = NULL;
                if ([classesOffered count] > 0) {
                    if (self.view.window)
                        searching = NO;
                        //the ad pops up in the next view controllers viewWillAppear method and after exiting the ad, the views no longer work
                        [self performSegueWithIdentifier:@"ChooseClass" sender:self];
                }else {
                    [spinner dismiss];
                    PCFCustomAlertView *alert = [[PCFCustomAlertView alloc] initAlertView:CGRectMake(0, 0, 300, 200) :@"Search Results" :@"No results were found. Please try broadening the search or double check your input." :@"OK"];
                    [alert show];
                    //the views still work here though..
                    searching = NO;
                }
            });
//rest omitted because it is irrelevant.
}

CustomPopup.c

-(void)dismiss
{
    __block UIWindow *animatedWindow = self.window;
    [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationCurveEaseOut animations:^{
        animatedWindow.transform = CGAffineTransformMakeScale(0.0f, 0.0f);
    }completion:^(BOOL finished) {
        animatedWindow.hidden = YES;
        animatedWindow = nil;
    }];
}

-(void)show
{
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.windowLevel = UIWindowLevelAlert;
    self.window.backgroundColor = [UIColor clearColor];
    self.center = CGPointMake(CGRectGetMidX(self.window.bounds), CGRectGetMidY(self.window.bounds));
    [self.window addSubview:self];
    [self.window makeKeyAndVisible];

    //animated
    self.window.transform = CGAffineTransformMakeScale(1.5f, 1.5f);
    self.window.alpha = 0.0f;

    __block UIWindow *animationWindow = self.window;
    [UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationCurveEaseIn animations:^{
        animationWindow.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
        animationWindow.alpha = 1.0f;
    }completion:nil];

}

我尝试在 viewWillAppear 方法中将视图设置为第一响应者,但这也不起作用。

4

1 回答 1

0

在您的解除方法中,您将单个窗口设置为具有零比例并隐藏。这肯定是你的问题。动画弹出视图然后将其从超级视图中删除。

于 2012-12-02T13:19:19.487 回答