Metodo di telefonata da UITextField
-
20-09-2019 - |
Domanda
ho un problema. Ho implementato un UITextField che contiene un phonenumber, quindi ho implementato il seguente metodo per chiamare il numero di telefono:
- (void)rufeAn{
NSString *prefix = (@"tel://");
UIApplication *app = [UIApplication sharedApplication];
NSString *dialThis = [NSString stringWithFormat:@"%@%@", prefix, map.kordinate.telefon];
NSURL *url = [NSURL URLWithString:dialThis];
[app openURL:url];
}
Ma come posso dire al textField quando tocco su di esso, per iniziare il metodo e comporre?
Soluzione
Sono d'accordo con St3fan che un TextField normale non dovrebbe mai causare un'azione toccando. I assumerà per il momento che si dispone di un UITextField speciale che può essere reso non modificabile e quindi si presenta come un UILabel
, formattato per assomigliare ad un collegamento ipertestuale. Tale interfaccia può essere corretta. Toccando un campo di testo che sembra è modificabile, ma in realtà fa una telefonata sarebbe ovviamente essere corretto.
Si potrebbe implementare il protocollo UITextFieldDelegate
e guardare per textFieldShouldBeginEditing:
. Dal momento che questo campo di testo non è modificabile, ovviamente, si dovrebbe tornare NO.
Si potrebbe aggiungere un pulsante "Chiama" all'interno del campo di testo utilizzando le viste sovrapposte (leftView
o rightView
; leggere la documentazione sul corretto UE per questi)
Si potrebbe sottoclasse UITextField
per ignorare touchesBegan:withEvent
, touchesEnded:withEvent:
e touchesCancelled:withEvent:
per gestire il tocco voi stessi. Ricordate: è necessario ricevere un touchesBegan
e touchesEnded
senza un touchesCancelled
tra di loro al fine di prendere in considerazione un tocco. Mai sparare un'azione basata solo su touchesBegan
.
Altri suggerimenti
Tapping un campo di testo non dovrebbe mai comportare una certa azione. A mio parere questo è il design dell'interfaccia utente male. Perché non aggiunge un pulsante accanto al campo che fa funzionare il codice di cui sopra?