Met de release van de iOS 5 SDK is de UIAlertView-klasse bijgewerkt om standaard tekstinvoer, beveiligde tekstinvoer en formuliervelden voor gebruikersnaam / wachtwoord te ondersteunen. Deze snelle tip laat zien hoe u kunt profiteren van deze nieuwe verbeteringen!
In een eerdere lange handleiding voor beginners leerde ik de lezer een project opzetten met een eigen knop en achtergrond. Ik zal het in die tutorial gemaakte project gebruiken als startpunt voor deze tutorial.
De lay-out en formulierelementen van een UIAlertView
kan nu eenvoudig en snel worden gecontroleerd door de alertViewStyle
eigendom. Mogelijke opties voor deze eigenschap zijn onder meer:
Met deze stijl wordt één tekstveld aan de meldingsweergave toegevoegd:
Deze stijl is net als het veld met platte tekst, behalve dat alle ingevoerde tekens worden verborgen:
Als u deze waarde instelt voor de stijleigenschap, worden zowel een normale tekstveldinvoer voor een gebruikersnaam als een beveiligde tekstveldinvoer voor een wachtwoord toegevoegd:
Dit is de standaardstijl die we allemaal al kennen en waar we van houden:
Alle bovenstaande stijlen zijn net zo eenvoudig te implementeren als het instellen van de alertViewStyle
eigendom op uw UIAlertView
, ofwel met puntnotatie:
message.alertViewStyle = UIAlertViewStylePlainTextInput;
Of door de methode setter rechtstreeks te bellen:
[message setAlertViewStyle: UIAlertViewStylePlainTextInput];
Dat is het! Nadat u deze eigenschap hebt ingesteld, wordt de weergave van de waarschuwingsweergave dienovereenkomstig aangepast.
Het weergeven van tekstvelden in de waarschuwingsweergave zal natuurlijk niet veel goeds doen tenzij u ook toegang hebt tot de waarde die de gebruiker invoert. Dit wordt gedaan met de textFieldAtIndex:
methode. U geeft eenvoudigweg de index op van het tekstveld dat u wilt openen (0 - 1 in de bovenstaande voorbeelden) en de relevante UITextField
object wordt geretourneerd.
Bekijk de. Voor een voorbeeld van hoe dit werkt -alertView: clickedButtonAtIndex:
gedelegeerde methode die we al hebben geïmplementeerd in het bijgevoegde demoproject. Als we de meldingsstijl wijzigen in UIAlertViewStyleLoginAndPasswordInput
en verander de standaardknoptitel in "Login", dan kunnen we toegang krijgen tot de waarden die door de gebruiker in de gedelegeerde methode zijn ingevoerd, zoals:
- (ongeldig) alertView: (UIAlertView *) alertView ClickedButtonAtIndex: (NSInteger) buttonIndex NSString * title = [alertView buttonTitleAtIndex: buttonIndex]; if ([title isEqualToString: @ "Login"]) UITextField * username = [alertView textFieldAtIndex: 0]; UITextField * wachtwoord = [alertView textFieldAtIndex: 1]; NSLog (@ "Gebruikersnaam:% @ \ nWachtwoord:% @", gebruikersnaam.text, wachtwoord.text);
Er zijn een paar manieren waarop het gebruik van de nieuwe waarschuwingsstijlen averechts kan werken.
Als u slechts drie knoppen toevoegt aan de UIAlertView
, de lay-out van elke nieuwe stijl wordt scheef.
Alle nieuwe stijlen kunnen comfortabel 2 knoppen aan, maar de standaardstijl die in het verleden werd gebruikt, kan tot 6 verwerken wanneer de titel en het bericht worden verwijderd:
De UIAlertViewStyleLoginAndPasswordInput
stijl kan de overlooptekst niet netjes verwerken als de andere stijlen:
Zelfs als u slechts een kort bericht invoert zoals 'U moet zowel een gebruikersnaam als een wachtwoord invoeren'. was genoeg om de esthetiek te verpesten.
Naast de hierboven besproken knopstijlen introduceerde de iOS 5 SDK ook een nieuw UIAlertViewDelegate
methode, -alertViewShouldEnableFirstOtherButton:
. Deze methode wordt zowel bij het eerste weergeven van de waarschuwingsweergave als bij elke keer dat de gebruiker een teken invoert in een van de tekstvelden genoemd, waardoor het zeer eenvoudig is om basisinvoervalidatie uit te voeren voordat de waarde van een gebruiker wordt geaccepteerd.
Bekijk het volgende voorbeeld:
- (IBAction) showMessage: (id) afzender UIAlertView * message = [[UIAlertView alloc] initWithTitle: @ "Wat is uw telefoonnummer?" message: nel delegate: self cancelButtonTitle: @ "Cancel" otherButtonTitles: @ "Continue", nil]; [message setAlertViewStyle: UIAlertViewStylePlainTextInput]; [berichtenscherm]; - (BOOL) alertViewShouldEnableFirstOtherButton: (UIAlertView *) alertView NSString * inputText = [[alertView textFieldAtIndex: 0] tekst]; if ([inputText length]> = 10) return YES; else return NO;
Met de bovenstaande code kan de gebruiker alleen op de knop "Doorgaan" drukken nadat ze ten minste 10 tekens in het formulierveld hebben ingevoerd. Ik weet zeker dat je je eigen validatie robuuster wilt maken, maar dit eenvoudige voorbeeld laat zien hoe nuttig deze nieuwe deelnemersmethode kan zijn..