所以我有一個按鈕和動畫的問題。基本上,我使用UIView動畫製作視圖的動畫,同時還試圖在視圖內按鈕上輕敲一下。該視圖與按鈕一樣大,視圖實際上是UIImageView的一個子類,在按鈕下面有一個圖像。該視圖是放置在Interface Builder中的容器視圖的子視圖,啓用了用戶交互並啓用了裁剪。所有動畫和按鈕處理都在此UIImageView子類中完成,而startFloating
消息根據需要從單獨的類發送。iPhone UIView動畫禁用UIButton子視圖
如果我沒有動畫,buttonTapped:
消息會被正確發送,但在動畫期間它不會被髮送。我也嘗試過實施touchesEnded
方法,併發生相同的行爲。
的UIImageView子類的init(我已經用顏色填充,所以我可以看到幀按鈕被正確設置它一定):
- (id)initWithImage:(UIImage *)image {
self = [super initWithImage:image];
if (self != nil) {
// ...stuffs
UIButton *tapBtn = [UIButton buttonWithType:UIButtonTypeCustom];
tapBtn.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
[tapBtn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
tapBtn.backgroundColor = [UIColor cyanColor];
[self addSubview:tapBtn];
self.userInteractionEnabled = YES;
}
return self;
}
啓動動畫(如果我不
動畫方法所以
- (void)startFloating {
[UIView beginAnimations:@"floating" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:10.0f];
self.frame = CGRectMake(self.frame.origin.x, -self.frame.size.height, self.frame.size.width, self.frame.size.height);
[UIView commitAnimations];
}
,是明確的:把這個按鈕工作正常)
- 使用的UIView動畫有效地禁用按鈕。
- 禁用動畫會使按鈕生效。
- 按鈕的大小和位置正確,並且正確地與視圖一起移動。
嗯。這看起來相當不錯,但與動畫的預期相反。當你說「自己製作動畫」時,你指的是NSTimer風格的動畫?另外我假設實施觸摸方法家族會表現出相同的行爲? – bensnider 2010-06-03 20:22:11
所以是使用NSTimer動畫我能夠以這種方式使用按鈕。謝謝。 – bensnider 2010-06-04 14:03:21
你也可以自己做觸摸追蹤,而不是依賴按鈕。它仍然需要一些手動動畫,但可能會爲您提供更好的交互效果。 – axiixc 2011-06-14 19:01:11