gpt4 book ai didi

ios - 我们可以在 UITextField 的扩展中调用委托(delegate)吗

转载 作者:搜寻专家 更新时间:2023-11-01 06:30:13 24 4
gpt4 key购买 nike

我无法在下面的代码中找到调用委托(delegate)的任何方法,如果没有委托(delegate),则无法调用 textFieldDidBeginEditing 方法

import UIKit

class ModifiedTextField: UITextField { }

extension UITextField: UITextFieldDelegate{

func fieldEmptyError(value: Bool){

let textFieldVal = "\(self.placeholder!)"

if (value){
layer.borderColor = UIColor.red.cgColor
layer.cornerRadius = 5.0
layer.masksToBounds = true
layer.borderWidth = 1
pulsate()
textFieldOrigVal(string: textFieldVal, borderColor: UIColor.red)
}else {

textFieldOrigVal(string: textFieldVal, borderColor: UIColor.lightGray)
layer.borderWidth = 0.2
layer.borderColor = UIColor.lightGray.cgColor

}
}


public func textFieldDidBeginEditing(_ textField: UITextField) {
textField.fieldEmptyError(value: false)
}


}

最佳答案

首先你需要将你的扩展替换为

extension ModifiedTextField : UITextFieldDelegate{}

但是你说这样做会出错

您收到错误消息是因为 fieldEmptyError 方法可用于 ModifiedTextField 而不是 UITextField,并且您将方法调用为 textField.fieldEmptyError(value: false)

所以你需要直接在你的扩展中调用方法

extension ModifiedTextField : UITextFieldDelegate{
func textFieldDidBeginEditing(_ textField: UITextField) {
fieldEmptyError(value: false)

}
}

并且不要忘记设置委托(delegate)您可以通过 Storyboard或以编程方式完成

override func awakeFromNib() {
delegate = self
}

所以最后你的整个代码看起来像这样

import UIKit
class ModifiedTextField: UITextField {

override func awakeFromNib() {
delegate = self
}
}
extension ModifiedTextField : UITextFieldDelegate{
func textFieldDidBeginEditing(_ textField: UITextField) {
fieldEmptyError(value: false)

}
func fieldEmptyError(value: Bool){

let textFieldVal = "\(self.placeholder!)"

if (value){
layer.borderColor = UIColor.red.cgColor
layer.cornerRadius = 5.0
layer.masksToBounds = true
layer.borderWidth = 1
pulsate()
textFieldOrigVal(string: textFieldVal, borderColor: UIColor.red)
}else {

textFieldOrigVal(string: textFieldVal, borderColor: UIColor.lightGray)
layer.borderWidth = 0.2
layer.borderColor = UIColor.lightGray.cgColor

}
}
}

关于ios - 我们可以在 UITextField 的扩展中调用委托(delegate)吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48457593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com