我在警报中有一个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()
答案 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
}
}
}
它最终应该是什么样的: