Lo stai facendo nel modo sbagliato, dovresti abilitare e disabilitare il pulsante di invio in base all'input. Per prima cosa devi accedere al pulsante. Questo è facile, basta creare l'avviso senza tasti, creare un pulsante stand-alone e aggiungerlo alla finestra di dialogo:
[alert addButtonWithTitle:@"OK"];
UIButton *submitButton = [[alert subviews] lastObject];
[submitButton setEnabled:…];
E poi si deve impostare un delegato per i campi di testo e attivare o disattivare il pulsante quando i campi cambiano :
- (BOOL) textField: (UITextField*) textField
shouldChangeCharactersInRange: (NSRange) range
replacementString: (NSString*) string
{
int textLength = [textField.text length];
int replacementLength = [string length];
BOOL hasCharacters = (replacementLength > 0) || (textLength > 1);
[self setButtonsAreEnabled:hasCharacters];
}
// Disable the ‘Return’ key on keyboard.
- (BOOL) textFieldShouldReturn: (UITextField*) textField
{
return NO;
}
Ovviamente dovresti inserire tutto questo in una classe separata in modo da non rovinare il codice di chiamata.
Come il widget iTunes password? Apple usa UIAlertView per questo? –