我有一個UITextField
只需要數字。這是一個電話號碼字段。一旦該字段中有10個字符(區號+數字),我將textField.text
字符串轉換爲NSMutableString
以將其格式化爲電話號碼。Swift:自動格式化UITextField後動畫UIButton
現在,一旦格式發生,我需要動畫我的UIButton
讓用戶以相同的格式繼續下一頁,但格式和按鈕動畫不會同時發生。我可以輸入10個字符,自動格式化,退格一個字符,輸入另一個數字,按鈕將顯示,但從不在同一個動作中。
@IBOutlet weak var submitButton: UIButton!
@IBOutlet weak var phoneNumber: UITextField!
@IBAction func phoneNumberDidChange(sender: AnyObject) {
switch count(phoneNumber.text) {
case 10:
var formattedNumber : NSMutableString = NSMutableString(string: self.phoneNumber.text)
formattedNumber.insertString("(", atIndex: 0)
formattedNumber.insertString(")", atIndex: 4)
formattedNumber.insertString(" ", atIndex: 5)
formattedNumber.insertString("-", atIndex: 9)
self.phoneNumber.text = formattedNumber as String
case 14:
UIView.animateWithDuration(0.2, animations: {() -> Void in
self.submitButton.center = CGPointMake(self.view.center.x, self.view.center.y)
})
default:
UIView.animateWithDuration(0.2, animations: {() -> Void in
self.submitButton.center = CGPointMake(self.submitButton.center.x - 400, self.submitButton.center.y)
})
}
}
override func viewDidLayoutSubviews() {
submitButton.center = CGPointMake(submitButton.center.x - 400, submitButton.center.y)
}
如何在同一動作中獲得自動格式和按鈕動畫?當我將UIView.animateWithDuration()
添加到case 10:
時,它根本不會被調用。
我不知道這是否會導致你的問題,但如果你在IB中使用自動佈局,你不應該設置中心屬性,你應該修改約束來動畫按鈕的位置。 – rdelmar
不,那不是。 'UIView.animateWithDuration()'實際上是被調用的,因爲我在完成處理程序中使用了'println()'來測試,但是按鈕本身沒有出現。 – chicobermuda
你使用自動佈局嗎?即使這不是你的直接問題,在使用自動佈局時,你仍然應該設置框架(或中心)。 – rdelmar