【发布时间】:2016-02-13 08:41:26
【问题描述】:
我已经关注了这个tutorail 如何将 textField 限制为特定长度和字符集
这是我的代码,但没有调用委托:
VC 类:这个被调用(调试时验证)
import UIKit
import CoreLocation
public class InlineMainViewController: UIViewController, CLLocationManagerDelegate, UITextFieldDelegate, MainUiDelegate {
...
var nameTextVerifier = NameTextVerifier()
@IBOutlet weak var enterName_text: UITextField!
...
override public func viewDidLoad() {
enterName_text.delegate = nameTextVerifier
}
NameTextVerifier 类:
import Foundation
public class NameTextVerifier: NSObject, UITextFieldDelegate {
public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.characters.count == 0 {
return true
}
let currentText = textField.text ?? ""
let prospectiveText = (currentText as NSString).stringByReplacingCharactersInRange(range, withString: string)
return prospectiveText.containsOnlyCharactersIn("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") &&
prospectiveText.characters.count <= 6
}
}
当我输入enterName_text时,这个代码永远不会被调用
另一方面,当我将相同的 shouldChangeCharactersInRange 放入 VC 类并将 VC 设置为委托时
func onViewDidLoad() { enterName_text.delegate = self }
让shouldChangeCharactersInRange 执行
如何检查问题所在?
【问题讨论】:
-
你在哪里有
func onViewDidLoad(){...}...你的意思是说override func viewDidLoad(){...}?否则,onViewDidLoad()永远不会被调用,这可能是您问题的根源