• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Keyboard ausblenden

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Hallo zusammen,

also ich habe eine Anwendung fürs iPhone entwickelt in der es auch einen TextView gib.
wenn ich auf diesen TextView klicke erscheint auch die Tastatur aber ich bekomme die nicht mehr
weg. Dieser Return-Knopf geht irgendiwe nicht. Was muss ich da beachten?
Kann mir da jemand helfen?

Gruß bginner
 
Du musst im IB das Textfield-Delegate setzen und im der *.m folgende Methode hinzufügen:

- (BOOL)textFieldShouldReturnUITextField *)textField {
[textField resignFirstResponder];
return YES;
}
 
Also ich habe das TextField jetzt dem Files's Owner zugeordnet. Aber die Methode funktioniert irgendwie nicht. Da scheint irgendwo ne Klammer oder ein Doppelpunkt zu fehlen aber ich weiß nicht wo, jedenfalls spuckt der mir immer nen Fehler aus.
 
Wieso denn das und was meinst Du damit überhaupt?
Ich bin in den IB gegangen, habe auf diesen TextView geklickt. und dann den Punkt "Delegate" angeklickt und mit der Maus die daraufhin erschienene blaue Linie zum Files Owner gezogen. War das jetzt ausführlich genug?

Preisfrage: Wie sieht eine Fehlermeldung aus wenn in XCode eine Klammer fehlt?
Ungefähr so: error: expected '{' before '*' token.

Allerdings kann das ja nicht stimmen, wer weiß warum? und was mache ich falsch?

EDIT: Vielen Dank an ppocket, jetzt funktioniert es.
Allerdings gibt es eine Warnung: warning: local declaration of 'chosenIssue' hides instance variable
chosenIssue heißt mein TextField.

Geht das genau so mit einer TextView?

EDIT2: Die Warnung ist jetzt weg.

EDIT3: Wie krieg ich das hin das auch bei einem TextView das Keyboard weggeht?
Ich weiß das man das wieder mit resignFirstResponder machen muss aber mir fehlt die
Funktion wo das rein muss.
 
Zuletzt bearbeitet:
Ich bin in den IB gegangen, habe auf diesen TextView geklickt. und dann den Punkt "Delegate" angeklickt und mit der Maus die daraufhin erschienene blaue Linie zum Files Owner gezogen. War das jetzt ausführlich genug?
Ausführlich genug, ja. Das ist auch etwas ganz anderes, als „ich habe das TextField jetzt dem Files's Owner zugeordnet“. Du hast den File's Owner zum Delegate des TextFields gemacht. ;-)

MacApple
 
Ja das kann man so sagen aber das Problem habe ich ja bereits gelöst. Aber wie blende ich das Keyboard aus wenn ich in einen TextView klicke? Habe in der Klassenreferenz zum UITextView nur gelesen das ich das wieder mit resignFirstResponder machen muss, aber mir fehlt die Funktion in die ich das schreiben muss. Kann mir die jemand verraten oder zumindest sagen wo ich nachschauen kann?
 
iPhone OS ist ja nicht mein Ding, aber kurzes Reinlesen in die Dokumentation sagt Folgendes:

UITextView > UIView > UIResponder > NSObject.

So sieht die Klassenhierarchie von UITextView aus (genau wie in Cocoa). Der UIResponder interessiert dich in diesem Vorhaben. Er ist darauf ausgelegt, Events zu Verarbeiten. Somit auch touches. Du findest dann dort folgende Methode:

Code:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

Diese Methode wird aufgerufen, wenn ein oder mehrere touch(es) auf dem iPhone bzw. iPod touch gemacht werden.

Du überschreibst also diese Methode in deiner TextView-Subklasse und machst dort das resignFirstResponder, falls das TextView es schon ist. Fertig.

Gruss ppocket
 
mach doch einfach ne Methode

-(IBAction)textFieldDone:(id)sender {
[sender resignFirstResponder];
}

und setze dem Textfield eine Verbindung auf "Did End on Exit"

Wenn du kein Done Button hast z.b. bei einer Telefonnummer etc. mach das ueber einen Unsichtbaren Button im Hintergrund und dann kann der User auch auf den Screen tappen und die Tastatur verschwindet.
 
Es geht immer noch nicht.

Ich habe folgendes implementiert:
Code:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
  [comments resignFirstResponder];
}

Das zeigt keine Wirkung, also ich merke keine Veränderung. comments ist mein UITextView.
Im IB hab ich die notwendigen Verbindungen aber schon hergestellt.
Was fehlt denn jetzt noch?

Ich habe auch die UITextView Klassen-Reference studiert, aber keine Funktion bringt mir das gewünschte Ergebniss.

P.S.: Bitte etwas ausführlicher wenns euch keine Umstände macht, bin Neuling auf dem Gebiet. THX
 
@Modern Geek:
Hallo und erstmal danke für den Tipp:
aber du sprichst von einem TextField. ich meine aber einen TextView.

Was meinst du hiermit ?
mach doch einfach ne Methode
und setze dem Textfield eine Verbindung auf "Did End on Exit"

einfach die Methode DidEndOnExit in meine *.m einbinden und gut ist?
 
doch der soll schon edtierbar sein. ich will nur das keyboard ausblenden welches automatisch erscheint wenn ich in den TextView klicke.
 
@bginner

schuldige hatte ich falsch gelesen bei der TextView geht das so nicht da musst du es ueber das delegate machen.
 
Habe es jetzt hinbekommen, auf YouTube gibts ein Video dazu, da zeigt es jemand mit einem TextField, das ganze muss man dann nur noch auf ein TextView übertragen und fertig. Man braucht aber einen seperaten button um das keyboard auszublenden.
 
warum so kompliziert, wenn es auch so einfach geht... :S