इनपुट के बाद UIAlertController के UIAlertAction को सक्षम करें, मैं UITextField
और एक UIAlertAction
बटन "ठीक" लेबल वाला एक संवाद प्रस्तुत करने के लिए UIAlertController
का उपयोग कर रहा हूं। मैं बटन को कैसे अक्षम करूं जब तक कि कई वर्ण (5 वर्ण कहें) UITextField
में इनपुट हैं?इनपुट
इनपुट
उत्तर
जोड़ें निम्नलिखित संपत्ति
@property(nonatomic, strong)UIAlertAction *okAction;
फिर अपने वर्ग में आपकी ViewController
self.okAction = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:nil];
self.okAction.enabled = NO;
UIAlertController *controller = [UIAlertController alertControllerWithTitle:nil
message:@"Enter your text"
preferredStyle:UIAlertControllerStyleAlert];
[controller addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.delegate = self;
}];
[controller addAction:self.okAction];
[self presentViewController:controller animated:YES completion:nil];
इसके अलावा के अपने viewDidLoad
विधि में निम्न कोड की प्रतिलिपि को लागू निम्नलिखित UITextField
प्रतिनिधि विधि
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *finalString = [textField.text stringByReplacingCharactersInRange:range withString:string];
[self.okAction setEnabled:(finalString.length >= 5)];
return YES;
}
यह काम
आप अपने UITextField
को एक पर्यवेक्षक जोड़ सकते हैं चाहिए:
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
[textField addTarget:self action:@selector(alertControllerTextFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}
लेकिन पहली बार अपने बटन को अक्षम:
okAction.enabled = NO;
तो विधि आपके द्वारा निर्दिष्ट में यह सत्यापित करें:
- (void)alertTextFieldDidChange:(UITextField *)sender {
UIAlertController *alertController = (UIAlertController *)self.presentedViewController;
if (alertController) {
UITextField *someTextField = alertController.textFields.firstObject;
UIAlertAction *okAction = alertController.actions.lastObject;
okAction.enabled = someTextField.text.length > 2;
}
}
यह अच्छा है, अतिरिक्त गुणों के लिए कोई जरूरत नहीं है। मौजूदा एपीआई धन्यवाद –
सही उपयोग – malhal
एक बेहतर दृष्टिकोण क्या गलत बुद्धि है के बारे में उपयोगकर्ता को सचेत करने होगा एच इनपुट के सत्यापन के बाद उसका इनपुट, ताकि उपयोगकर्ता जानता है कि ऐप उससे क्या उम्मीद कर रहा है।
- (void)askReasonWithPreviousReason:(NSString *)text
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert" message:@"Enter reason" preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField)
{
textField.text = text;
}];
[alertController addAction:[UIAlertAction actionWithTitle:@"Save" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
if ([self isReasonValid:alertController.textFields.firstObject.text])
{
UIAlertController *alertController2 = [UIAlertController alertControllerWithTitle:AlertTitle message:@"Are you sure you would like to save?" preferredStyle:UIAlertControllerStyleAlert];
[alertController2 addAction:[UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
[self saveReason:alertController.textFields.firstObject.text];
}]];
[alertController2 addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:Nil]];
[self presentViewController:alertController2 animated:YES completion:nil];
}
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:Nil]];
[self presentViewController:alertController animated:YES completion:nil];
}
- (BOOL)isReasonValid:(NSString *)reason
{
NSString *errorMessage = [[NSString alloc] init];
if (reason.length < 5)
{
errorMessage = @"Reason must be more than 5 characters";
}
else if (reason.length > 100)
{
errorMessage = @"Reason must be less than 100 characters";
}
if (errorMessage.length != 0)
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert" message:errorMessage preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
[self askReasonWithPreviousReason:reason];
}]];
[self presentViewController:alertController animated:YES completion:nil];
return NO;
}
return YES;
}
स्विफ्ट 3 कार्यान्वयन के आधार पर soulshined के जवाब:
var someAlert: UIAlertController {
let alert = UIAlertController(title: "Some Alert", message: nil, preferredStyle: .alert)
alert.addTextField {
$0.placeholder = "Write something"
$0.addTarget(self, action: #selector(self.textFieldTextDidChange(_:)), for: .editingChanged)
}
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
let submitAction = UIAlertAction(title: "Submit", style: .default) { _ in
// Do something...
}
submitAction.isEnabled = false
alert.addAction(submitAction)
return alert
}
func textFieldTextDidChange(_ textField: UITextField) {
if let alert = presentedViewController as? UIAlertController,
let action = alert.actions.last,
let text = textField.text {
action.isEnabled = text.characters.count > 0
}
}
आप ('.addTextField अंदर' स्थापित करना चाहिए textField.delegate = self' configurationHandler' – bibscy
मैं एक और पोस्ट मूल रूप से stackoverflow पर एक ही सवाल पूछने के लिए an answer था। संक्षेप में, ऐसा करने के कई तरीके हैं: UITextFieldDelegate, अधिसूचना, केवीओ का उपयोग करें, या स्पष्ट रूप से नियंत्रण पर ईवेंट हैंडलिंग लक्ष्य जोड़ें। मेरे समाधान a simple UIAlertController subclass घटना से निपटने के लक्ष्य है कि आप
alert.addTextField(configurationHandler: { (textField) in
textField.placeholder = "Your name"
textField.autocapitalizationType = .words
}) { (textField) in
saveAction.isEnabled = (textField.text?.characters.count ?? 0) > 0
}
आप इस तरह के प्रोजेक्ट में कई बार की तुलना में अधिक अलर्ट से निपटने के लिए अगर यह सुविधाजनक होना चाहिए फोन करके बस कॉन्फ़िगर कर सकते हैं चारों ओर लिपटा है।
- 1. किसी इनपुट इनपुट पैरामीटर
- 2. इनपुट
- 3. इनपुट
- 4. इनपुट
- 5. इनपुट
- 6. इनपुट
- 7. इनपुट
- 8. इनपुट
- 9. इनपुट
- 10. @ इनपुट
- 11. Jquery छुपाएं इनपुट इनपुट ऑब्जेक्ट
- 12. एक इनपुट से कई इनपुट
- 13. इनपुट बनाम: jQuery में इनपुट
- 14. प्रोग्राम इनपुट में इनपुट इनपुट में आंशिक पाठ का चयन
- 15. ऑटो इनपुट दिनांक और समय इनपुट इनपुट फ़ील्ड में?
- 16. जावा क्रमबद्धता readObject इनपुट readExternal इनपुट
- 17. इनपुट इनपुट को प्रॉक्सी करने के तरीके
- 18. एंड्रॉइड इनपुट संवाद रिटर्न इनपुट मूल्य
- 19. इनपुट चेकबॉक्स से इनपुट फ़ील्ड सक्रिय करें
- 20. उपयोगकर्ता इनपुट
- 21. CSS3: इनपुट
- 22. नए इनपुट
- 23. जेपीएएसवर्डफ़िल्ल्ड इनपुट
- 24. खराब इनपुट
- 25. Jquery इनपुट
- 26. इनपुट फ़ील्ड्स
- 27. एकाधिक इनपुट
- 28. रिमोट इनपुट
- 29. एक इनपुट
- 30. उपयोगकर्ता इनपुट
आप .. UITextField लंबाई की जांच करने की आवश्यकता है UITextField लंबाई 5 फिर बटन सक्षम हो जाएगा अन्य बुद्धिमान नहीं –