ios - 为什么我的委托(delegate)仅在定义为 VC 而不是外部类时才起作用?

标签 ios xcode swift delegates

我已按照 tutorail 了解如何将 textField 限制为特定长度和字符集

这是我的代码,但未调用委托(delegate):

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 设置为委托(delegate)时

func onViewDidLoad() { EnterName_text.delegate = self }

使shouldChangeCharactersInRange执行

如何检查问题所在?

最佳答案

您是否应该使用 TextManager 代替 NameTextVerifier

var nameTextVerifier = TextManager()
in place of
var nameTextVerifier = NameTextVerifier()

关于ios - 为什么我的委托(delegate)仅在定义为 VC 而不是外部类时才起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377844/

相关文章:

c# - 无法从 Xamarin iOS SecKeychain 检索 GUID

ios - Xcode:模块文件是由较新版本的编译器创建的

ios - 如何将位置添加到日历条目?

ios - 在 SWIFT 中创建具有动态值/键的可变字典

ios - 如何提交仅 64 位 [降级] iOS 应用程序更新

ios - 处理 Firebase + Facebook 登录流程

c# - iOS - 本地身份验证更改失败消息

ios - 如何以编程方式设置 UICollectionView 宽度

jquery - iOS Safari 滚动到顶部在某些页面上不起作用。为什么?

ios - 没有缺口的 iPhone X 模拟器截图