迅速删除TextField边框

时间:2018-11-30 14:48:26

标签: ios swift alert textfield

我在警报中有一个textField。 我已经像这样配置了borderStyle:

textField.borderStyle = .roundedRect

但是您可以看到,第一个边界周围还有一个矩形边界:

我想通过代码将其删除,但找不到任何选项或操作方法。

这是警报代码:

private func presentUsernameAlert() {
    let alert = UIAlertController(title: nil, message: "Alors ?", preferredStyle: .alert)
    alert.addTextField(configurationHandler: newUsername)
    alert.addAction(UIAlertAction(title: "Annuler", style: .default, handler: nil))
    alert.addAction(UIAlertAction(title: "Confirmer", style: .default, handler: nil))
    present(alert, animated: true, completion: nil)
}

private func newUsername(textField: UITextField) {
    usernameTextField = textField
    usernameTextField?.borderStyle = .roundedRect
    usernameTextField?.keyboardAppearance = .dark
    usernameTextField?.placeholder = "Nouveau pseudo"
}

然后我打电话给presentUsernameAlert()

1 个答案:

答案 0 :(得分:2)

使用open var textFields: [UITextField]? { get }的属性AlertViewController,在进行视觉调试后,我看到我们需要删除0中的superView.superView.subView,并更改TextField.superView背景以清除修复问题。

尝试以下代码:

private func presentUsernameAlert() {
    let alert = UIAlertController(title: nil, message: "Alors ?", preferredStyle: .alert)
    alert.addTextField(configurationHandler: newUsername)
    alert.addAction(UIAlertAction(title: "Annuler", style: .default, handler: nil))
    alert.addAction(UIAlertAction(title: "Confirmer", style: .default, handler: nil))
    present(alert, animated: true) {

    }
    if let textFields = alert.textFields {
        if textFields.count > 0{
 textFields[0].superview!.superview!.subviews[0].removeFromSuperview()
            textFields[0].superview!.backgroundColor = UIColor.clear
        }
    }
}

它最终应该是什么样的:

Alert Textfield with Rounded Borders