1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Keyboard ausblenden

Dieses Thema im Forum "iOS-Developer" wurde erstellt von bginner, 21.02.10.

  1. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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
     
  2. marceo

    marceo Granny Smith

    Dabei seit:
    06.07.09
    Beiträge:
    17
    Du musst im IB das Textfield-Delegate setzen und im der *.m folgende Methode hinzufügen:

    - (BOOL)textFieldShouldReturnUITextField *)textField {
    [textField resignFirstResponder];
    return YES;
    }
     
  3. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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.
     
  4. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Wieso denn das und was meinst Du damit überhaupt?

    Den Du uns nicht verraten magst? Meine Kristallkugel ist letzte Woche leider kaputt gegangen.

    MacApple
     
  5. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Also das ist natürlich sicher mal falsch!

    Eher so:
    Code:
    - (BOOL)textFieldShouldReturn:(UITextField *)textField { [...] }
    Gruss ppocket
     
  6. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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.
     
    #6 bginner, 21.02.10
    Zuletzt bearbeitet: 21.02.10
  7. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    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
     
  8. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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?
     
  9. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    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
     
  10. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    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.
     
  11. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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
     
  12. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    probier mal meine Loesung :)

    habe die selbst schon mehrfach genutzt.
     
  13. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    @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 ?
    einfach die Methode DidEndOnExit in meine *.m einbinden und gut ist?
     
  14. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Heißt das, dass der TextView gar nicht editierbar sein soll? Soll er nur einen Text anzeigen? Dann setze einfach die Property editable auf NO.

    MacApple
     
  15. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    doch der soll schon edtierbar sein. ich will nur das keyboard ausblenden welches automatisch erscheint wenn ich in den TextView klicke.
     
  16. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Wo genau hast du das implementiert? Es sieht danach aus, als ob du keine Subklasse - wie von mir erwähnt - gemacht hast... Das ist natürlich nötig dafür.

    Gruss ppocket
     
  17. Modern Geek

    Modern Geek Ontario

    Dabei seit:
    14.10.09
    Beiträge:
    348
    @bginner

    schuldige hatte ich falsch gelesen bei der TextView geht das so nicht da musst du es ueber das delegate machen.
     
  18. bginner

    bginner Ingrid Marie

    Dabei seit:
    13.12.09
    Beiträge:
    264
    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.
     
  19. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    warum so kompliziert, wenn es auch so einfach geht... :S
     

Diese Seite empfehlen