Ich erstelle eine UIALLART-Ansicht mit zwei Schaltflächen und einem Textfeld, und ich möchte deaktivieren Sie die Schaltfläche "OK", wenn das Textfeld leer ist. Wie ich das Uibutton-Objekt bekommen kann, um es zu ändern ist der Status aktiviert.Eigenschaft aktiviert Schaltfläche in Uialertview
2
A
Antwort
11
können Sie verwenden, um die enabled
Eigenschaft geerbt von UIControl
:
for(UIView *view in alertView.subviews) {
if([view isKindOfClass:[UIButton class]]) {
((UIButton *) view).enabled = NO;
}
}
Aus Gründen der Wiederverwertbarkeit, dies wird noch einfacher, wenn Sie eine Kategorie auf NSArray
haben, die Objekte einer bestimmten Klasse ruft:
@implementation NSArray (JRAdditions)
- (NSArray *)objectsOfClass:(Class)cls {
NSParameterAssert(cls);
NSMutableArray *array = [@[] mutableCopy];
for(id obj in self) if([obj isKindOfClass:cls]) [array addObject:obj];
return [array copy];
}
@end
schauen jetzt
kann Ihr Code wie folgt aus:
[[alertView.subviews objectsOfClass:[UIButton class]] enumerateObjectsUsingBlock:^(UIButton *obj, NSUInteger index, BOOL *stop) {
obj.enabled = NO;
}];
0
Seit iOS 5 können Sie dies in der UIAlertViewDelegate-Instanz tun.
-(BOOL) alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
return [[alertView textFieldAtIndex:0].text length] > 0;
}
Verwandte Themen
- 1. IAP iOS UIAlertView Schaltfläche abbrechen
- 2. UIAlertView in ARC App
- 3. Erkennung der Schaltfläche klicken mit UIAlertView
- 4. UIAlertView in swift/Xcode
- 5. otherButtonTitles in UIAlertView
- 6. Aufruf benutzerdefinierter UIAlertView in benutzerdefiniertem UIAlertView
- 7. Flex3 Menüleiste: Bindungen in "aktiviert" Eigenschaft
- 8. Oberste Taste in UIAlertView hervorheben
- 9. Swift - Texteingabe in UIAlertView
- 10. Schaltfläche Breite Eigenschaft ignoriert?
- 11. Deaktivierung der UIAlertView-Taste
- 12. Deaktivierung der UIAlertView-Taste
- 13. Wirklich modale UIAlertView in iPhone?
- 14. HTML-Schaltfläche senden nicht aktiviert PHP-Code
- 15. Android: Überprüfen einer Schaltfläche ist aktiviert
- 16. Programmgesteuertes Aktivieren der Schaltfläche "Speichern" aktiviert/deaktiviert
- 17. Mocking UIAlertView in Swift
- 18. Wie die Textfarbe in Schaltfläche schwebt Eigenschaft
- 19. Ändern deaktiviert Eigenschaft einer Schaltfläche
- 20. Customizing UIAlertView
- 21. UIAlertView Eingabeaufforderung
- 22. UIAlertView Delegaten
- 23. Standardtext in UIAlertVIEW in Show
- 24. Position des Abbrechen-Buttons in UIAlertView ändern?
- 25. Iphone UIAlertView wirft EXC_BAD_ACCESS. - Bearbeitet, nicht verursacht durch UIAlertView
- 26. Wie Bild in UIAlertView hinzufügen?
- 27. Aktiviert Zustand nicht funktioniert
- 28. Wie funktioniert [UIAlertView]?
- 29. iphone UIAlertView Modal
- 30. Hide UIAlertView programmgesteuert?
eine Methode wie ViewAtIndex nicht vorhanden? – alex
@alex Wenn Sie eine Ansicht in einem bestimmten Index abrufen müssen, können Sie '[[view subviews] objectAtIndex: someIndex]' –
+1 für diese Antwort verwenden, da es eine gute Lösung für Benutzer ist, die einfach zu schreiben sind Funktionen, die Funktionalität benötigen, ohne dass die aufrufenden Klassen Delegaten sein müssen und ihre eigenen Delegatfunktionen bereitstellen müssen (in diesem Fall 'alertViewShouldEnableFirstOtherButton: '). Außerdem, wenn Sie mehrere Schaltflächen haben und eine bestimmte benötigen, 'if ([((UIButton *) anzeigen) .titleLabel.text isEqualToString: @" Middle Button "]' macht eine gute zweite wenn -check. – joverboard