Ho una tastiera personalizzata che sto usando per modificare il testo in mytextField
e funziona benissimo. Tuttavia, non riesco mai a ottenere il delegato shouldChangeCharactersInRange
da eseguire utilizzando la mia tastiera personalizzata. Esegue quando utilizzo la mia tastiera attuale (ovviamente non la tastiera predefinita per iPhone, dal momento che sono impostato su mytextField.inputView = numberPad.view). Cosa devo fare per provocare l'attivazione del delegato shouldChangeCharactersInRange
utilizzando la tastiera personalizzata? A proposito, la tastiera personalizzata è solo un mucchio di pulsanti.Come posso ottenere UITextFieldDelegate.shouldChangeCharactersInRange per attivare con inputView personalizzato?
- (void) numberPadPressed: (UIButton *)sender {
[mytextField insertText:[[NSNumber numberWithInt:sender.tag] stringValue]];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
NSLog(@"shouldChangeCharactersInRange: %@", resultingString);
return true;
}
- (void)viewDidLoad {
mytextField.text = @"";
mytextField.inputView = numberPad.view;
mytextField.delegate = self;
[mytextField becomeFirstResponder];
}
Ho appena testato utilizzando il tuo suggerimento sopra, ma ancora dovrebbeChangeCharactersInRange non ha sparato quando viene chiamato numberPadPressed. Penso che siamo sulla strada giusta ... – docchang
Come calcolerò l'intervallo? C'è un modo per spostare il cursore in una posizione particolare in un campo di testo? – docchang
Ho aggiornato il codice di esempio. Usa [mytextField selectedRange] per ottenere l'intervallo selezionato, che sarà solo un punto di inserimento se non c'è alcuna selezione, o sarà un intervallo di caratteri se c'è una selezione. –