我想尝试禁用发布按钮,直到用户选择了图像为止。
但是,我将默认图像设置为占位符。当文本字段中未填充信息时,我已经设法禁用了发布按钮。但是,我还没有找到立即禁用按钮的方法。希望我已经对自己做了解释。
func handleBlancInformation(){
address.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)
breed.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)
phone.addTarget(self, action: #selector(PostViewController.textFieldDidChange), for: UIControlEvents.editingChanged)
}
@objc func textFieldDidChange() {
guard let address = address.text, !address.isEmpty,
let breed = breed.text, !breed.isEmpty,
let phone = phone.text, !phone.isEmpty,
let image = imagePosted.image, !imagePosted.isEqual("placeholder.png")
else {
postButton.setTitleColor(UIColor.lightText, for: UIControlState.normal)
postButton.isEnabled = false
return
}
postButton.setTitleColor(UIColor.white, for: UIControlState.normal)
postButton.isEnabled = true
}
答案 0 :(得分:0)
据我了解,用户可以在加载视图时单击,而您想阻止此权限?
但是当他们第一次进入uiview时,他们可以单击发布按钮
如果这样,只需禁用viewDidLoad()或情节提要中的按钮即可。
override func viewDidLoad() {
postButton.isEnabled = false
}
或取消选中“已启用”字段
要验证用户是否确实选择了图像(在加载视图之后),请检查Greg的answer
答案 1 :(得分:0)
我需要更多代码才能在此处提供确切的解决方案,但请这样考虑:
无论用户使用哪种方法来选择新图像,都应该在该位置启用“发布”按钮。
例如,假设您正在使用UIImagePickerViewController来处理图像拾取,则需要启用此方法内部的“发布”按钮,该按钮是 UIImagePickerControllerDelegate 的一部分:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
//Enable button here
} else {
//Disable button here
}
}
答案 2 :(得分:0)
尝试一下。使用bool作为状态来检查是否选择了天气图像。
var isImageSelected = false
override func viewDidLoad() {
postButton.isEnabled = false
}
检查图像是否被选中。选定图像时更改按钮启用属性。
if isImageSelected{
// Do Your Work
}
答案 3 :(得分:0)
这是我设法使按钮从用户进入此选项卡的那一刻就消失了,并在uiimage和文本字段都填满后显示的方法。
<div><div></div><div></div><div></div><div></div></div>
#frame div:nth-child(1) {
z-index:10;
width: 30%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
#frame div:nth-child(2) {
z-index:10;
width: 30%;
height: 100%;
position: absolute;
right: 0;
top: 0;
}
#frame div:nth-child(3) {
z-index:10;
width: 40%;
height: 20%;
position: absolute;
left: 30%;
top: 0;
}
#frame div:nth-child(4) {
z-index:10;
width: 40%;
height: 20%;
position: absolute;
left: 30%;
bottom: 0;
}