正如标题所陈述的,我希望把一个图像或XIB作为我的文本字段中的值。这是我的设计:
ios - 是否可以在文本字段中将图像或xib设置为值?-LMLPHP
对于3个黑点,我可以通过占位符来实现,但是第一个有值的文本字段呢?我需要设置一个带边框的紫色圆形,它是文本字段的值,这意味着用户可以删除它并编辑文本字段。
我试过这样做:

let imageView = UIImageView();
let image = UIImage(named: "dot-icon");
imageView.image = image;
imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
tfTest.addSubview(imageView)
let leftView = UIView.init(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
tfTest.leftView = leftView;
tfTest.leftViewMode = UITextFieldViewMode.always

这可以通过向textfield添加图像来实现我的目的,但是现在textfield是不可编辑的。
有人有什么想法吗?
谢谢

最佳答案

拍摄4个图像视图[pinImgView1、pinImgView2、pinImgView3、pinImgView4]
还有一个文本字段[pinTextField]。
deleget方法:

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
    {
        let characterSet = CharacterSet(charactersIn: "0123456789")
        if (string.rangeOfCharacter(from: characterSet) == nil && string.characters.count > 0)
        {
            return false
        }

        let newString = (self.pinTextField.text! as NSString).replacingCharacters(in: range, with: string) as NSString
        self.showPinImagesAsPerString(stringPIN: newString as String)
        return true
    }

然后添加以下方法:
    @objc func clearTextField()
    {
        self.pinTextField.text = ""
        self.pinImgView1.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView2.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView3.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView4.image = #imageLiteral(resourceName: "icon_black")
        self.pinTextField.becomeFirstResponder()
    }

    func showPinImagesAsPerString(stringPIN: String)
    {
        let length = stringPIN.characters.count
        self.pinImgView1.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView2.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView3.image = #imageLiteral(resourceName: "icon_black")
        self.pinImgView4.image = #imageLiteral(resourceName: "icon_black")

        if length > 0{
            self.pinImgView1.image = #imageLiteral(resourceName: "icon_Purple")
        }
        if length > 1{
            self.pinImgView2.image = #imageLiteral(resourceName: "icon_Purple")
        }
        if length > 2{
            self.pinImgView3.image = #imageLiteral(resourceName: "icon_Purple")
        }
        if length > 3{

            self.pinImgView4.image = #imageLiteral(resourceName: "icon_Purple")

          //here you need to check entered PIN (stringPIN) is correct or not

        }
    }

07-28 02:37
查看更多