如何在动画期间检测视图上的触摸,我已经使用了UIViewAnimationOptionAllowUserInteract



我有两个按钮,它们从左到右连续移动,但当我试图单击其中一个时。即使我在动画上设置了UIViewAnimationOptionAllowUserInteraction属性,但它对我不起作用,我也无法检测点击了哪个按钮。

{
m_pFacebookPostButton=[UIButton buttonWithType:UIButtonTypeCustom];
m_pFacebookPostButton.frame=CGRectMake(-320, 410, 320, 50);
[m_pFacebookPostButton retain];
[m_pFacebookPostButton setBackgroundColor:[UIColor greenColor]];
m_pFacebookPostButton.tag=204;
[m_pFacebookPostButton setTitle:@"Facebook" forState:UIControlStateNormal];
//[m_pFacebookPostButton addTarget:self action:@selector(clickone) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:m_pFacebookPostButton];
m_pFacebookPostButton1=[UIButton buttonWithType:UIButtonTypeCustom];
m_pFacebookPostButton1.frame=CGRectMake(0, 410, 320, 50);
[m_pFacebookPostButton1 retain];
[m_pFacebookPostButton1 setBackgroundColor:[UIColor redColor]];
m_pFacebookPostButton1.tag=205;
[m_pFacebookPostButton1 setTitle:@"Twitter" forState:UIControlStateNormal];
//[m_pFacebookPostButton1 addTarget:self action:@selector(clicktwo) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:m_pFacebookPostButton1];
[UIView animateWithDuration:5.0
                      delay:0.0
                    options:(UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction)
                 animations:^{
                     [UIView setAnimationDelegate:self];
                     [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

                      m_pFacebookPostButton.frame = CGRectMake(0, 410, 320, 50);
                      m_pFacebookPostButton1.frame = CGRectMake(320, 410, 320, 50);

                 }
                 completion:^(BOOL finished){
                     NSLog(@"Move to left done");
                 }];

}

请帮我解决这个问题,Thanx提前帮我。

您可以创建一个自定义按钮对象(NewFile>SubClassof:UIButton)并添加到底部

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (CGRectContainsPoint(self.bounds, point)) {
        NSLog("Button got hit");
        return self;
    }
    else {
        return nil
    }
}

并使用此自定义按钮在您的viewController 中

myCustomButton * m_pFacebookPostButton = [[myCustomButton alloc] init];

似乎是关于Quartz2D的问题。

请参阅此===>是否可以成功地为移动的UIButton设置动画?

Engin Kurutepe表示,

This sounds a bit too complicated for UIKit and CoreAnimation. It seems like you're developing something like a game. Why not use a global animation timer for let's say ~60 fps and do your drawing in Quartz2D? Then for each touch you could quickly check any hits between Quartz refreshes.

编辑:尝试使用其他动画方法。

示例:

-(void)hello
{
    NSLog(@"hello");
}
-(void)animationDone
{
    NSLog(@"done");
}
UIButton *button=[[UIButton alloc]init];
button.frame = CGRectMake(30, 50, 100, 100);
button.backgroundColor=[UIColor redColor];
[button addTarget:self action:@selector(hello) forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:button];
// animate
[UIView beginAnimations:@"button_in" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDone)];
[UIView setAnimationDuration:1.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationBeginsFromCurrentState:YES];
[button setFrame:CGRectMake(100.0, 100.0, 100.0, 30.0)];
[UIView commitAnimations];

希望它能帮助。。。

相关内容

  • 没有找到相关文章