ios - textField shouldChangeCharactersInRange 正在执行用户操作后一步

标签 ios swift uikit

我有一个 textField,用户可以在其中输入电子邮件地址。我想在输入文本成为有效电子邮件地址的那一刻激活提交按钮。

验证有效,但 shouldChangeCharactersInRange 中的代码似乎在用户输入后执行一步。因此,当电子邮件有效时,用户仍然需要在按钮更改之前再点击一个键。同样,如果电子邮件地址变为无效,则按钮不会更改,直到再点击一个键。

请注意,这也发生在设备上,而不仅仅是模拟器。

代码如下:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) {
    if emailIsValidFormat(textField.text) {
        emailSubmitButton.alpha = 1
    } else {
        emailSubmitButton.alpha = 0.4
    }
}

最佳答案

调用此方法时文本尚未更改。您必须使用rangereplacementString 来构建电子邮件地址,然后进行验证。

关于ios - textField shouldChangeCharactersInRange 正在执行用户操作后一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28649711/

相关文章:

swift - 电子邮件验证器 RxSwift?

ios - 当我以编程方式进行时,有什么方法可以在 IB 中绘制 segues 吗?

ios - 如何在 Swift 中从模态弹出窗口调用 Controller ?

iphone - 'high speed scrubbing' *提示*出现在哪个版本的iOS中?

ios - 在两个 VC 之间传递数据

iphone - Cocos2d 与 UIKit

ios - 今天扩展 UIWebView

objective-c - Cocoa:在 safari 中打开 URL 并强制开始从该 URL 下载内容

ios - 具有重叠单元格和自定义插入和删除动画的 UICollectionView

ios - 如何正确地为 UIBezierPath 设置动画以产生水/波浪效果?