ios hinzufügen von benutzerdefinierten inputView
Bin ich fest auf ein Konzept, das in iOS, die ich kann nicht scheinen zu verstehen, dass, egal wie viel ich darüber gelesen. Ich versuche, überschreiben die standard-iOS-Ziffernblock mit einem custom design. Wenn der Benutzer berührt die UITextField, ich möchte die benutzerdefinierte inputView zu offenbaren, statt der standard-Ziffernblock.
Erstellte ich eine separate .h/.m/.xib-ViewController-Klasse für meine eigene inputView genannt "customInputViewController" jetzt, es ist nur ein dunkler hintergrund und eine Schaltfläche, die verschleiert über die Hälfte des Bildschirms, wenn das UITextField berührt wird (ähnlich wie die Anzahl pad, aber es nur anders aussieht). Meine Implementierung schlägt fehl, wenn ich auf die eine Taste auf meiner eigenen inputView -- iOS wirft ein EXC_BAD_ACCESS error.
Dies ist, wie ich laden das .xib-Datei zur Laufzeit und befestigen Sie die benutzerdefinierte inputView auf die UITextField-Objekt:
UIViewController *v = [[customInputViewController alloc] initWithNibName:@"customInputDesign" bundle:nil];
myTextInput.inputView = v.view;
In der .xib-Datei des benutzerdefinierten inputView, ich der Besitzer der Datei zu werden "customInputViewController" und ich erstellte eine (IBAction) - Methode und befestigte es an einem UIButton. Wenn diese Schaltfläche geklickt wird, wird die (IBAction) eingerichtet ist zum senden einer NSLog(@"Button Geklickt") angezeigt. Nichts besonderes. Es ist nur eine einfache boilerplate Umsetzung, weiter zu werfen ist ein Fehler.
Vielleicht dies mache ich völlig falsch. Kann jemand ein einfaches Beispiel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ansicht v.-Ansicht wird beibehalten als die inputView Eigentum ist definiert als (readwrite, retain). Allerdings, wenn Sie lassen Sie Ihre customInputViewController v irgendwo, bevor Sie die input-Taste geklickt wird, erhalten Sie eine crash (EXC_BAD_ACCESS)
Können Sie versuchen, diese in Ihrem Haupt-controller:
Sollte funktionieren ...
Erstens, werfen Sie einen Blick auf diese
Eigentlich brauche ich nicht zu erwähnen, all das Chaos um Sie, aber es gibt einen interessanten Grund für die Erwähnung dieser, aus dem ersten Satz, den ich erwähne anzeigen-anzeigen-anzeigen, aber Sie machen die input-Ansicht in einer eigenen view-controller, und Sie versuchen, weisen Sie es als ein Eingabe-Ansicht der textfield-und init sollte nicht die Schaffung der Ansicht, loadView tut. Aufrufen der Ansicht getter (v. view), wenn die Sicht ist null verursachen loadView aufgerufen werden.Das ist, warum es abstürzt, mit EXC_BAD_ACCESS.
Quelle : Text -, Web-und Bearbeitung Programming Guide for iOS