Ich habe gerade mit Xcode und Objective-C begonnen und tat einige sehr grundlegende Anwendungen, aber was ich bin mit Problem ist sehr grundlegend dies. die Tastatur-Return-Taste nicht Ausblenden der Tastatur.
Ich habe im Internet nach der Lösung gesucht und alles, was sie sagen, ist zu verbinden Delegat an den Eigentümer der Datei und fügen Sie die Funktion und es sollte funktionieren, ich tat, dass und nichts funktioniert.
Ich habe eine Ok-Taste, die funktioniert, und auch das Klicken auf eine freie Stelle auf dem Bildschirm funktioniert, nur die Return-Taste....
Ich verwende den Simulator, ich habe noch nicht mit dem iPhone getestet. (xcode 3.2.5 64 bit mit dem 4.2 Simulator).
Dies ist die Codezeile, die den Delegaten mit jedem textFiled verbinden soll. 1. Ich habe bereits versucht, beide zurückzugeben YES
y NO
hat nicht funktioniert. 2. Ich habe versucht, sowohl einen bestimmten Objektnamen für das textField und diese allgemeine Art und Weise, hat nicht funktioniert.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
In der: grundlegende Ansicht-Controller-Verbindung -> Verbindungen -> Ausgänge, ich habe die: Delegate -- File's Owner. und in der Datei Eigentümer in referenzierenden Ausgänge gibt es: Delegate - Runde Stil text.....
EDIT - ich vergaß zu erwähnen, dass ich die Methode überprüft habe und sie nicht aufgerufen wird!!!
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@"Working!!!");
[textField resignFirstResponder];
return YES;
}
was sollte ich tun, damit es passiert? das ist, warum die Leute sagen, um den Delegaten zu verbinden, aber in meinem Fall ist es verbunden und nicht die Funktion auslösen... ich weiß, es ist Art von dumme Frage, aber für einen Nobie wie mich die Lösung ist nicht offensichtlich...
OK, noch ein Edit - mit meinem ganzen Code: ich kann einfach nicht verstehen, was ich tun soll.... Dies ist: basicViewController.h
:
#import <UIKit/UIKit.h>
@interface basicViewController : <#superclass#> <UITextFieldDelegate>
@interface basicViewController : UIViewController <UITextFieldDelegate> {
//every object that we want to interact with (like text field or lable) is call an outlet!!!!
//here we define the outlets for our program
IBOutlet UITextField *txtName;
IBOutlet UILabel *lblMessage;
}
//here are the getters and setter for our outlets
@property (nonatomic, retain) IBOutlet UITextField *txtName;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;
//method decleration for the OK button action
- (IBAction) doSomething;
//method for hiding the keyboard when clicking on empty area in the app
//we will put an invisible button on all area and clicking on it will make keyboard disapear
- (IBAction) makeKeyboardGoAway;
@end
Dies ist basicViewController.m
:
#import "basicViewController.h"
@implementation basicViewController
//synthesizeing the objects that we made' this will create the getter and setters automaticly
@synthesize txtName;
@synthesize lblMessage;
- (IBAction) doSomething{
// makeing keyboard disapear when pressing ok button (doing that form the text field)
//when pressing the OK button, the keyboard will disapear and when clicking in the text field it will show again
[txtName resignFirstResponder];
NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text];
//the objective-c way for setting the test in the text field
[lblMessage setText:msg];
//the regular object oriented way
//lblMessage.text = msg;
[msg release];
}
- (IBAction) makeKeyboardGoAway{
[txtName resignFirstResponder];
}
//when clicking the return button in the keybaord
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@"Working!!!");
[textField resignFirstResponder];
return YES;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
Vielleicht bin ich jetzt klarer, tut mir leid, dass ich es vorher nicht getan habe. Hat jemand eine Idee, was ich falsch mache? es sollte ziemlich gerade vorwärts sein.....
EDIT - Ich füge ein Bild von allen Elementen hinzu, ich hoffe, das hilft mir weiter :-)
10x vielmals für jeden, der versucht zu helfen....i mag dieses Framework wirklich, es ist so toll nach c++ und java, python und vielen anderen...und ich arbeite mit einem Buch, aber es ist für ios 3.1, vielleicht ist das das Problem.....
1 Stimmen
Verwenden Sie wirklich ein Textfeld? Überprüfen Sie es erneut, es könnte UITextView sein.
0 Stimmen
Wenn die Methode nicht aufgerufen wird, sollten Sie die Schritte in meiner Antwort unten befolgen, die Ihnen weiterhelfen sollten.
0 Stimmen
Ok, ich versuche dies jetzt, aber ich dachte, Sie sagten, dass es aufgerufen werden muss, bevor das andere Zeug....i'll beck mit JA oder NEIN (objektiv-c-Stil) bald....LOL
0 Stimmen
Es ist Problem der Verbindung bro nichts anderes.Ok wählen Sie Dateien owener und öffnen Sie Inspektor jetzt wählen Sie Ihre textField IBoutlet Name von view.now sehen Sie Delegaten in Verbindung Inspektor jetzt machen diese Verbindung zu Datei Eigentümer. Dies funktioniert immer so richtig zu überprüfen.
1 Stimmen
10x Ishu, ich weiß, es sollte funktionieren, ich habe es an vielen Stellen gelesen, um den Delegaten mit dem Dateieigentümer zu verbinden und die Funktion und es sollte funktionieren, aber es funktioniert einfach nicht....das ist der letzte Ausweg Ort für mich, wenn die internt fehlschlägt....ich habe es wieder ein paar Mal versucht, und immer noch nicht funktioniert.....don't have a clue....\
0 Stimmen
P.s. Ich kann im Inspektor -> Verbindung sehen, dass das textName textField einen Delegaten zu Files Owner im Auslassbereich des Inspektors und auch einen Delegaten - Files owner in den referenzierenden Auslässen hat
0 Stimmen
Ich habe ein kurzes Beispielprojekt für Sie zusammengestellt. Sie vermissen entweder eine IBOutlet-Verbindung zwischen Ihrem UITextField-Objekt und dem Controller, oder Sie richten Ihren Textfeld-Delegaten nicht richtig ein. Siehe meine aktualisierte Antwort unten.