UIAlertController - 更改文本字段的大小并在它们之间添加 space
UIAlertController - change size of text fields and add space between them
我的警报是这样的:
是否可以使输入更大并在它们之间添加 space?这是我的代码片段。我尝试更改第二个文本字段的 frame
属性 但没有帮助:
let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
// Add the textfields
alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in
textField.placeholder = "Vaše jméno"
})
alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in
textField.placeholder = "Společné heslo"
var oldFrame = textField.frame
oldFrame.origin.y = 40
oldFrame.size.height = 60
textField.frame = oldFrame
})
UIAlertController 视图旨在简单且不可自定义。如果你制作了自己的 presented view controller,那么这个 view 就属于你了,你可以做任何你想做的事情。
WARNING: only use this solution as a last resort! If you want to fine-tune the look of your alert controller, use a custom alert view. Take a look at this question for details.
作为 hacky 解决方案,您可以使用两者之间的第三个文本字段作为分隔符并将其禁用。此外,您可以使用 .
为其指定自定义高度
要避免让这个额外的文本字段成为焦点,请使用 UITextFieldDelegate
方法 textFieldShouldReturn(_:)
来让第二个文本字段成为焦点。
class AlertViewController: UITextFieldDelegate {
[...]
var firstTextField: UITextField!
var secondTextField: UITextField!
func setUpAlert() {
[...]
alert.addTextField { [weak self] textField in
self?.firstTextField = textField
textField.delegate = self
}
alert.addTextField { textField in
textField.addConstraint(textField.heightAnchor.constraint(equalToConstant: 2))
textField.isEnabled = false
}
alert.addTextField { [weak self] textField in
self?.secondTextField = textField
}
[...]
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == firstTextField {
secondTextField?.becomeFirstResponder()
}
return true
}
}
结果:
不幸的是,您无法隐藏额外的文本字段,但至少可以给它一个背景:
textField.backgroundColor = .black
结果:
我的警报是这样的:
是否可以使输入更大并在它们之间添加 space?这是我的代码片段。我尝试更改第二个文本字段的 frame
属性 但没有帮助:
let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
// Add the textfields
alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in
textField.placeholder = "Vaše jméno"
})
alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in
textField.placeholder = "Společné heslo"
var oldFrame = textField.frame
oldFrame.origin.y = 40
oldFrame.size.height = 60
textField.frame = oldFrame
})
UIAlertController 视图旨在简单且不可自定义。如果你制作了自己的 presented view controller,那么这个 view 就属于你了,你可以做任何你想做的事情。
WARNING: only use this solution as a last resort! If you want to fine-tune the look of your alert controller, use a custom alert view. Take a look at this question for details.
作为 hacky 解决方案,您可以使用两者之间的第三个文本字段作为分隔符并将其禁用。此外,您可以使用
要避免让这个额外的文本字段成为焦点,请使用 UITextFieldDelegate
方法 textFieldShouldReturn(_:)
来让第二个文本字段成为焦点。
class AlertViewController: UITextFieldDelegate {
[...]
var firstTextField: UITextField!
var secondTextField: UITextField!
func setUpAlert() {
[...]
alert.addTextField { [weak self] textField in
self?.firstTextField = textField
textField.delegate = self
}
alert.addTextField { textField in
textField.addConstraint(textField.heightAnchor.constraint(equalToConstant: 2))
textField.isEnabled = false
}
alert.addTextField { [weak self] textField in
self?.secondTextField = textField
}
[...]
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == firstTextField {
secondTextField?.becomeFirstResponder()
}
return true
}
}
结果:
不幸的是,您无法隐藏额外的文本字段,但至少可以给它一个背景:
textField.backgroundColor = .black
结果: