0

我正在创建一个动画 UIButton 来模拟插页式横幅,但它没有收到事件 UIControlEventTouchUpInside。这是我的代码:

-(void)insertInterstitialBannerAtView:(UIView *)mainView {
    if ([self bannerExists]) {
        bannerButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [bannerButton setFrame:CGRectMake(0, 480, 320, 43)];
        [bannerButton setImage:[UIImage imageNamed:@"389.png"] forState:UIControlStateNormal];
        [bannerButton setEnabled:YES];
        [mainView addSubview:bannerButton];
        [mainView bringSubviewToFront:bannerButton];
        [bannerButton addTarget:self 
                         action:@selector(buttonPushed) 
               forControlEvents:UIControlEventTouchUpInside];

        [UIView animateWithDuration:2.0 
                         animations:^(void) {
                             [bannerButton setFrame:CGRectMake(0, 417, 320, 43)];
                         } 
                         completion:^(BOOL finished) {
                             [UIView animateWithDuration:2.0 delay:3.0 options:UIViewAnimationTransitionNone animations:^(void){
                                 [bannerButton setFrame:CGRectMake(0, 480, 320, 43)];
                         } 
                                          completion:^(BOOL finished) {

                                          }];
        }];
    }
}

-(IBAction)buttonPushed{
    NSLog(@"Interstitial Pushed");
}

-(BOOL)bannerExists{
    BOOL returnValue = FALSE;
    NSArray *names = [URLFORSPLASH componentsSeparatedByString:@"/"];
    NSString *fileName = [names lastObject];
    NSString *cacheFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filePath = [cacheFolder stringByAppendingPathComponent:fileName];
    if ([[NSFileManager defaultManager]fileExistsAtPath:filePath] ) {
        returnValue = TRUE;
    }
    return returnValue;
}

有人知道出了什么问题吗?

问候,克劳迪奥

4

1 回答 1

0

ios 在动画期间禁用交互。从 UIView 文档:http: //developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW111

“在动画过程中,动画视图的用户交互被暂时禁用。(在 iOS 5 之前,整个应用程序的用户交互被禁用。)”

If you're targeting ios 5, you might be able to get away with intercepting touches in the parent view and then checking to see if they're where the animation is/was when the touch was intercepted.

于 2012-04-19T18:12:17.157 回答