【发布时间】:2015-05-17 22:21:50
【问题描述】:
我有一个只接受数字的UITextField。这是一个电话号码字段。一旦字段中有 10 个字符(区号 + 号码),我将 textField.text 字符串转换为 NSMutableString 以将其格式化为电话号码。
现在,一旦格式发生,我需要为我的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 中使用自动布局,则不应设置 center 属性,您应该修改约束以动画按钮的位置。
-
不,不是这样。
UIView.animateWithDuration()实际上被调用了,因为我在完成处理程序中使用了println()进行测试,但按钮本身没有出现。 -
你在使用自动布局吗?即使这不是您的直接问题,您仍然应该在使用自动布局时设置框架(或中心)。
-
是的,
UIButton设置为水平和垂直中心、高度以及尾随/前导空格到边距 -
感觉跟
count(phoneNumber.text)不是自动刷新有关...
标签: ios swift uibutton switch-statement uitextfield