我有两个按钮,它们从左到右连续移动,但当我试图单击其中一个时。即使我在动画上设置了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];
希望它能帮助。。。