Verfahren zum Anruf von UITextField
-
20-09-2019 - |
Frage
ich habe ein Problem. Ich habe eine UITextField implementiert, die eine Telefonnummer enthält, dann habe ich die folgende Methode implementiert, um die Telefonnummer anzurufen:
- (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];
}
Aber wie kann ich auf das Textfeld sagen, wenn ich auf ihn berühren, um die Methode zu starten, und wählen Sie?
Lösung
Ich bin mit St3fan, dass ein normaler TextField- sollte nie eine Aktion bewirken durch Antippen. Ich werde für den Moment davon ausgehen, dass Sie eine spezielle UITextField haben, die nicht bearbeitet werden gemacht werden kann, und sieht dann wie ein UILabel
, formatiert wie ein Hyperlink zu suchen. Eine solche UI könnte richtig sein. ein Textfeld tippen, das aussieht wie es editierbar ist, aber tatsächlich einen Anruf macht natürlich wäre falsch.
Sie könnten das UITextFieldDelegate
Protokoll und achten Sie auf textFieldShouldBeginEditing:
implementieren. Da dieses Textfeld nicht bearbeitet werden kann, offensichtlich sollten Sie NO zurück.
Sie könnten einen „Anruf“ -Taste innerhalb des Textfeldes mit seinen Überlagerungsansichten hinzufügen (leftView
oder rightView
, lesen Sie die Dokumentation auf der richtige UE für diese).
Sie könnten Unterklasse UITextField
außer Kraft zu setzen touchesBegan:withEvent
, touchesEnded:withEvent:
und touchesCancelled:withEvent:
die Note selbst zu behandeln. Denken Sie daran: Sie touchesBegan
und touchesEnded
ohne touchesCancelled
zwischen ihnen, um sie eine Note betrachten erhalten muss. Nie eine Aktion ausgelöst basiert nur auf touchesBegan
.
Andere Tipps
ein Textfeld tippen, sollte nie in einer Aktion führen. Meiner Meinung nach, das ist schlecht User Interface Design. Warum Sie nicht über eine Schaltfläche neben dem Feld hinzufügen, die den obigen Code ausgeführt wird?