У меня есть UITextField
, который принимает только цифры. Это поле номера телефона. Если в поле есть 10 символов (код области + номер), я конвертирую строку textField.text
в NSMutableString
, чтобы отформатировать ее на номер телефона.Swift: Анимация UIButton после автоматического форматирования UITextField
Теперь, когда формат имеет место, мне нужно анимировать мой 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