2013-01-21 40 views
1

我有三個UITextField s,我用setFrame:方法進行了動畫處理。動畫本身效果很好,但問題是在用戶在屏幕上觸摸動畫之前開始的。發生的是所有三個UITextField都消失了。UITextField動畫完成,但在用戶觸碰後彈出回原始位置

需要注意的一件事是,當我按取消,然後按重新實例化動畫的按鈕時,UITextField會再次出現,並且仍然有用戶以前輸入的字符串。所以它不是像他們實際上消失......只是在視覺上消失,我想。

我有代碼:

- (IBAction)signupPressed:(UIButton *)sender 
{ 
    self.isSigningUp = YES; 
    [UIView animateWithDuration:0.3f 
          delay:0.0f 
         options:UIViewAnimationOptionCurveEaseOut 
        animations:^{ 
         self.krtiqueButton.alpha = 0.0f; 
         self.krtiqueButton.enabled = NO; 
         self.facebookButton.alpha = 0.0f; 
         self.facebookButton.enabled = NO; 
        } completion:^(BOOL finished){ 
         if (finished) { 
          [self animateSignUpCredentials]; 
         } 
        }]; 
} 
- (void)animateSignUpCredentials 
{ 
    [UIView animateWithDuration:0.3f 
          delay:0.0f 
         options:UIViewAnimationOptionCurveEaseOut 
        animations:^{ 
         self.fullnameTextField.frame = CGRectMake(20, 59, 280, 30); 
         self.emailTextField.frame = CGRectMake(20, 97, 280, 30); 
         self.passwordTextField.frame = CGRectMake(20, 135, 280, 30); 
         self.continueButton.alpha = 1.0f; 
        } completion:nil]; 
} 

我嘗試向上切換是SETFRAME方式:由來自SETFRAME改變它,[self.fullnameTextField sefFrame: ...]調用。否則,我真的無法想到任何哈哈。

有人有什麼想法嗎?

+0

在什麼情況下文本字段消失? –

+0

用戶在動畫之前觸摸屏幕或鍵盤上的下一個按鈕。 – jakenberg

回答

1

您是否正在使用自動佈局(一種iOS 6功能根據稱爲約束的算術規則來控制控件的放置)?要查看是否有自動版式上,打開你的情節提要/ NIB,按選項 + 命令 - 去「文件檢查器」(或只需點擊「文件檢查器」選項卡上的最右側的面板上)並查看是否選中「自動佈局」。

如果autolayout處於打開狀態,即使在更改了框架後,約束也會重新應用,並且控件將移回約束所指定的位置。您可以關閉自動佈局,也可以保留自動佈局,並以編程方式刪除約束或以編程方式更改約束,而不是更改框架。

查看此answer瞭解如何通過更改約束來設置動畫的示例。

+0

您是先生,是天才。 – jakenberg

+0

@ jsksma2即使是一個破損的時鐘也是一天兩次。 :) – Rob

+0

禁用自動佈局時,我收到了警告。當我在我的應用程序上進行自動佈局時,這會給我什麼問題嗎? – rohaldb

相關問題