it-swarm.com.de

Wie Tastatur für UITextView mit Return-Taste zu schließen?

In der Bibliothek von IB heißt es in der Einführung, dass am return Wird die Taste gedrückt, verschwindet die Tastatur für UITextView. Aber eigentlich die return Schlüssel kann nur als '\ n' fungieren.

Ich kann eine Schaltfläche hinzufügen und [txtView resignFirstResponder], um die Tastatur auszublenden.

Aber gibt es eine Möglichkeit, die Aktion für die hinzuzufügen return Tastatur eingeben, damit ich UIButton nicht hinzufügen muss?

374
Chilly Zhong

UITextView hat keine Methoden, die aufgerufen werden, wenn der Benutzer die Eingabetaste drückt. Wenn Sie möchten, dass der Benutzer nur eine Textzeile hinzufügen kann, verwenden Sie UITextField. Das Drücken der Return-Taste und das Ausblenden der Tastatur für ein UITextView entspricht nicht den Richtlinien für die Benutzeroberfläche.

Auch dann, wenn Sie dies tun möchten, implementieren Sie die textView:shouldChangeTextInRange:replacementText: Methode von UITextViewDelegate und dabei prüfen, ob der Ersetzungstext \n, verstecke die Tastatur.

Es könnte andere Wege geben, aber mir sind keine bekannt.

343
lostInTransit

Ich dachte, ich würde das Snippet stattdessen hier posten:

Stellen Sie sicher, dass Sie das Protokoll UITextViewDelegate unterstützen.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }

    return YES;
}

Swift 4.0 Update:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
        return false
    }
    return true
}
486
samvermette

Ich weiß, dass dies bereits beantwortet wurde, aber ich verwende das Zeichenfolgenliteral nicht wirklich gerne für die neue Zeile. Deshalb habe ich Folgendes getan.

- (BOOL)textView:(UITextView *)txtView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if( [text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location == NSNotFound ) {
        return YES;
    }

    [txtView resignFirstResponder];
    return NO;
}

Swift 4.0 Update:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if (text as NSString).rangeOfCharacter(from: CharacterSet.newlines).location == NSNotFound {
    return true
}
txtView.resignFirstResponder()
return false
}
74
ribeto

Ich weiß, dass dies oft beantwortet wurde, aber hier sind meine zwei Cent zu dem Thema.

Ich fand die Antworten von samvermette und ribeto sehr nützlich, und auch den Kommentar von maxpower in den ribeto 's Antworten. Bei diesen Ansätzen gibt es jedoch ein Problem. Das Problem, das matt in der Antwort von samvermette erwähnt, ist, dass die Tastatur ausgeblendet wird, ohne etwas einzufügen, wenn der Benutzer einen Zeilenumbruch einfügen möchte.

Mein Ansatz ist also eine Mischung aus den drei oben genannten Lösungen und ich überprüfe nur, ob die eingegebene Zeichenfolge eine neue Zeile ist, wenn die Länge der Zeichenfolge 1 ist. Wir stellen also sicher, dass der Benutzer tippt, anstatt sie einzufügen.

Folgendes habe ich getan:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    NSRange resultRange = [text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet] options:NSBackwardsSearch];
    if ([text length] == 1 && resultRange.location != NSNotFound) {
        [textView resignFirstResponder];
        return NO;
    }

    return YES;
}
42
josebama

Eleganter ist es, die Tastatur zu schließen, wenn der Benutzer außerhalb des Tastaturrahmens tippt.

Stellen Sie zunächst die Ansicht Ihres ViewControllers auf die Klasse "UIControl" im Identitätsinspektor von UIBuilder ein. Ziehen Sie die Ansicht bei gedrückter Ctrl-Taste in die Header-Datei des ViewControllers und verknüpfen Sie sie als Aktion mit dem Ereignis als Touch Up Inside. Beispiel:

ViewController.h

-(IBAction)dismissKeyboardOnTap:(id)sender;

In der ViewController-Hauptdatei ViewController.m:

-(IBAction)dismissKeyboardOnTap:(id)sender
    {
         [[self view] endEditing:YES];
    }

Sie können ein doppeltes Tippen oder eine lange Berührung mit ähnlichen Techniken erfordern. Möglicherweise müssen Sie Ihren ViewController als UITextViewDelegate festlegen und den TextView mit dem ViewController verbinden. Diese Methode funktioniert sowohl für UITextView als auch für UITextField.

Quelle: Big Nerd Ranch

BEARBEITEN: Ich möchte auch hinzufügen, dass, wenn Sie eine UIScrollView verwenden, die oben beschriebene Technik im Interface Builder möglicherweise nicht so einfach funktioniert. In diesem Fall können Sie einen UIGestureRecognizer verwenden und stattdessen die Methode [[self view] endEditing: YES] aufrufen. Ein Beispiel wäre:

-(void)ViewDidLoad{
    ....
    UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc] 
        initWithTarget:self action:@selector(tap:)];
    [self.view addGestureRecognizer: tapRec];
    ....
}

-(void)tap:(UITapGestureRecognizer *)tapRec{
    [[self view] endEditing: YES];
}

Wenn der Benutzer außerhalb der Tastatur tippt und kein Eingabefeld antippt, wird die Tastatur geschlossen.

35
TMilligan

Fügen Sie diese Methode in Ihren View Controller ein.

Swift:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
        return false
    }
    return true
}

Diese Methode kann auch für Sie hilfreich sein:

/**
Dismiss keyboard when tapped outside the keyboard or textView

:param: touches the touches
:param: event   the related event
*/
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    if let touch = touches.anyObject() as? UITouch {
        if touch.phase == UITouchPhase.Began {
            textField?.resignFirstResponder()
        }
    }
}
32
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if([text isEqualToString:@"\n"])
        [textView resignFirstResponder];
    return YES;
}

yourtextView.delegate=self;

Füge auch UITextViewDelegate hinzu

Protokoll nicht vergessen

WENN Sie nicht if([text isEqualToString:@"\n"]) hinzugefügt haben, können Sie nicht bearbeiten

26
Vineesh TP

Es gibt eine andere Lösung, wenn Sie mit uitextview arbeiten. Sie können die Symbolleiste als InputAccessoryView in "textViewShouldBeginEditing" hinzufügen. Über die Schaltfläche "Fertig" in dieser Symbolleiste können Sie die Tastatur schließen.

In viewDidLoad

toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)]; //toolbar is uitoolbar object
toolBar.barStyle = UIBarStyleBlackOpaque;
UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnClickedDone:)];
[toolBar setItems:[NSArray arrayWithObject:btnDone]];

In der Methode textviewdelegate

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
     [textView setInputAccessoryView:toolBar];
     return YES;
}

In Aktion von Button Done, die in der Symbolleiste ist, ist folgende:

-(IBAction)btnClickedDone:(id)sender
{
    [self.view endEditing:YES];
}
16
g212gs

Ich fand die Antwort von josebama die vollständigste und sauberste Antwort in diesem Thread.

Unten ist die Swift 4 Syntax dafür:

func textView(_ textView: UITextView, shouldChangeTextIn _: NSRange, replacementText text: String) -> Bool {
    let resultRange = text.rangeOfCharacter(from: CharacterSet.newlines, options: .backwards)
    if text.count == 1 && resultRange != nil {
        textView.resignFirstResponder()
        // Do any additional stuff here
        return false
    }
    return true
}
12
Puneet Kohli

Swift

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
    }
    return true
}

and configure

Verwenden des Navigationscontrollers zum Hosten einer Leiste zum Ausblenden der Tastatur:

in der .h Datei:

UIBarButtonItem* dismissKeyboardButton;

in der .m Datei:

- (void)viewDidLoad {
    dismissKeyboardButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyboard)];
}

-(void)textViewDidBeginEditing:(UITextView *)textView {
    self.navigationItem.rightBarButtonItem = dismissKeyboardButton;
}

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    self.navigationItem.rightBarButtonItem = dismissKeyboardButton;
}

-(void)dismissKeyboard {
    [self.textField resignFirstResponder];
    [self.textView resignFirstResponder];
    //or replace this with your regular right button
    self.navigationItem.rightBarButtonItem = nil;
}
6
Alex Stone

Genau wie bei einem matten Kommentar zu samvermette gefällt mir auch die Idee, "\ n" zu erkennen, nicht. Die "Return" -Taste gibt es in UITextView aus einem Grund, nämlich um zur nächsten Zeile zu gelangen.

Meiner Meinung nach ist die beste Lösung die Nachahmung der iPhone-Nachrichten-App, dh das Hinzufügen einer Symbolleiste (und einer Schaltfläche) auf der Tastatur.

Ich habe Code von folgendem Blogbeitrag erhalten:

http://www.iosdevnotes.com/2011/02/iphone-keyboard-toolbar/

Schritte:

- Fügen Sie die Symbolleiste zu Ihrer XIB-Datei hinzu - stellen Sie die Höhe auf 460 ein

- Symbolleistenschaltflächenelement hinzufügen (falls nicht bereits hinzugefügt). Wenn Sie es nach rechts ausrichten müssen, fügen Sie XIB auch ein flexibles Balkenschaltflächenelement hinzu, und verschieben Sie das Symbolleistenschaltflächenelement

-Erstelle wie folgt eine Aktion, die dein Schaltflächenelement mit resignFirstResponder verknüpft:

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

-Dann:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

- (void)keyboardWillShow:(NSNotification *)notification {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    CGRect frame = self.keyboardToolbar.frame;
    frame.Origin.y = self.view.frame.size.height - 260.0;
    self.keyboardToolbar.frame = frame;

    [UIView commitAnimations];
}

- (void)keyboardWillHide:(NSNotification *)notification {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    CGRect frame = self.keyboardToolbar.frame;
    frame.Origin.y = self.view.frame.size.height;
    self.keyboardToolbar.frame = frame;

    [UIView commitAnimations];
}
5
friend

Fügen Sie in viewDidLoad einen Beobachter hinzu

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(textViewKeyPressed:) name: UITextViewTextDidChangeNotification object: nil];

und dann mit dem Selektor nach "\ n" suchen

-(void) textViewKeyPressed: (NSNotification*) notification {

  if ([[[notification object] text] hasSuffix:@"\n"])
  {
    [[notification object] resignFirstResponder];
  }
}

Es wird "\ n" verwendet und nicht speziell nach einem Return-Schlüssel gesucht, aber ich denke, das ist in Ordnung.

UPDATE

Siehe die Antwort von ribto, die [NSCharacterSet newlineCharacterSet] Anstelle von \n Verwendet.

5
ToddB

Habe gerade dieses Problem auf eine andere Art gelöst.

  • Erstellen Sie eine Schaltfläche, die im Hintergrund platziert wird
  • Ändern Sie im Attributinspektor den Schaltflächentyp in "Benutzerdefiniert". Dadurch wird die Schaltfläche transparent.
  • Erweitern Sie die Schaltfläche, um die gesamte Ansicht abzudecken, und vergewissern Sie sich, dass sich die Schaltfläche hinter allen anderen Objekten befindet. Eine einfache Möglichkeit, dies zu tun, besteht darin, die Schaltfläche in der Ansicht an den Anfang der Listenansicht zu ziehen
  • Ziehen Sie die Schaltfläche mit gedrückter Maustaste auf das viewController.h Datei und erstellen Sie eine Aktion (Gesendetes Ereignis: Touch Up Inside) wie:

    (IBAction)ExitKeyboard:(id)sender;
    
  • Im ViewController.m Sollte aussehen, wie :

    (IBAction)ExitKeyboard:(id)sender {
        [self.view endEditing:TRUE];
    }
    
  • Führen Sie die App aus, und wenn Sie außerhalb der Textansicht klicken, wird die Tastatur ausgeblendet
5
Uvichy

Versuche dies :

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    if ([text isEqualToString:@"\n"]) {
        [self.view endEditing:YES];
    }

    return YES;

}
4
Nabil El

// Du kannst das benutzen ...

Schritt 1. Im ersten Schritt müssen Sie sicherstellen, dass Sie die Unterstützung für das Protokoll UITextViewDelegate deklarieren. Dies geschieht in Ihrer Header-Datei, da hier beispielsweise der Header aufgerufen wird

EditorController.h:

@interface EditorController : UIViewController  {
  UITextView *messageTextView;
}

@property (nonatomic, retain) UITextView *messageTextView;

@end

Schritt 2. Als nächstes müssen Sie den Controller als UITextView-Delegaten registrieren. In Anlehnung an das obige Beispiel habe ich den UITextView mit EditorController als Stellvertreter initialisiert.

- (id) init {
    if (self = [super init]) {
        // define the area and location for the UITextView
        CGRect tfFrame = CGRectMake(10, 10, 300, 100);
        messageTextView = [[UITextView alloc] initWithFrame:tfFrame];
        // make sure that it is editable
        messageTextView.editable = YES;

        // add the controller as the delegate
        messageTextView.delegate = self;
    }

Schritt 3. Und jetzt ist das letzte Teil des Puzzles, als Antwort auf die Meldung shouldCahngeTextInRange wie folgt vorzugehen:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
  replacementText:(NSString *)text
{
    // Any new character added is passed in as the "text" parameter
    if ([text isEqualToString:@"\n"]) {
        // Be sure to test for equality using the "isEqualToString" message
        [textView resignFirstResponder];

        // Return FALSE so that the final '\n' character doesn't get added
        return FALSE;
    }
    // For any other character return TRUE so that the text gets added to the view
    return TRUE;
}
4
Abhishek Pathak

SWIFT-Code

Implementieren Sie UITextViewDelegate in Ihrer Klasse/View wie folgt:

class MyClass: UITextViewDelegate  { ...

setzen Sie den textView-Delegaten auf self

myTextView.delegate = self

Und implementieren Sie dann Folgendes:

  func textViewDidChange(_ textView: UITextView) {
    if textView.text.characters.count >= 1 {

        if let lastChar = textView.text.characters.last {

            if(lastChar == "\n"){

              textView.text = textView.text.substring(to: textView.text.index(before: textView.text.endIndex))
              textView.resignFirstResponder()
            }
        }
    }
}

EDIT Ich habe den Code aktualisiert, weil es nie eine gute Idee ist, die Benutzereingabe in einem Textfeld zu ändern, um eine Problemumgehung zu erzielen und den Status nach dem Hack-Code nicht zurückzusetzen vollendet, fertiggestellt.

4

Okay. Jeder hat mit Tricks geantwortet, aber ich denke, der richtige Weg, dies zu erreichen, ist durch

Verbinden der folgenden Aktion mit dem Ereignis "Did End On Exit" in Interface Builder. (Klicken Sie mit der rechten Maustaste auf TextField und ziehen Sie mit gedrückter cntrl-Taste von 'Wurde beim Beenden beendet' zur folgenden Methode.

-(IBAction)hideTheKeyboard:(id)sender
{
    [self.view endEditing:TRUE];
}
3
carbonr

Schnelle Antwort:

override func viewDidLoad() {
    super.viewDidLoad()
    let tapGestureReconizer = UITapGestureRecognizer(target: self, action: "tap:")
    view.addGestureRecognizer(tapGestureReconizer)
}

func tap(sender: UITapGestureRecognizer) {
    view.endEditing(true)
}
3
Glauco Neves

Sie können die Tastatur auch ausblenden, wenn Sie auf dem Bildschirm berühren:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     UITouch * touch = [touches anyObject];
     if(touch.phase == UITouchPhaseBegan) {
        [txtDetail resignFirstResponder];
      }
 }
3
Hitesh Vaghela

Ich habe diesen Code verwendet, um den Responder zu ändern.

 - (BOOL)textView:(UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text
    {
        if ([text isEqualToString:@"\n"]) {
            //[textView resignFirstResponder];
            //return YES;
            NSInteger nextTag = textView.tag + 1;
            // Try to find next responder
            UIResponder* nextResponder = [self.view viewWithTag:nextTag];
            if (nextResponder) {
                // Found next responder, so set it.
                [nextResponder becomeFirstResponder];
            } else {
                // Not found, so remove keyboard.
                [textView resignFirstResponder];
            }
            return NO; 


            return NO;
        }
        return YES;

    }
3
Avijit Nagare

Die Frage lautet, wie man es mit der Eingabetaste macht, aber ich denke, dies könnte jemandem helfen, der die Absicht hat, die Tastatur bei der Verwendung von UITextView einfach verschwinden zu lassen:

@IBOutlet weak var textView: UITextView!

private func addToolBarForTextView() {
  let textViewToolbar: UIToolbar = UIToolbar()
  textViewToolbar = UIBarStyle.Default
  textViewToolbar = [
    UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Done, target: self, action: #selector(self.cancelInput)),
    UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil),
    UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: #selector(self.doneInput))
  ]
  textViewToolbar()
  self.textView.inputAccessoryView = textViewToolbar //do it for every relevant textView if there are more than one
}

func doneInput() {
  self.textView.resignFirstResponder()
}

func cancelInput() {
  self.textView.text = ""
  self.textView.resignFirstResponder()
}

Rufen Sie addToolBarForTextView () in der viewDidLoad oder einer anderen Lebenszyklusmethode auf.

Es scheint, das war die perfekte Lösung für mich.

Prost,

Murat

1
Murat Yasar
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text
{
    if (range.length==0) {
        if ([text isEqualToString:@"\n"]) {
            [txtView resignFirstResponder];
            if(textView.returnKeyType== UIReturnKeyGo){

                [self PreviewLatter];
                return NO;
            }
            return NO;
        }
    }   return YES;
}
1
Rinju Jain
+ (void)addDoneButtonToControl:(id)txtFieldOrTextView
{
    if([txtFieldOrTextView isKindOfClass:[UITextField class]])
    {
        txtFieldOrTextView = (UITextField *)txtFieldOrTextView;
    }
    else if([txtFieldOrTextView isKindOfClass:[UITextView class]])
    {
        txtFieldOrTextView = (UITextView *)txtFieldOrTextView;
    }

    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0,
                                                                          0,
                                                                          [Global returnDeviceWidth],
                                                                          50)];
    numberToolbar.barStyle = UIBarStyleDefault;


    UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_return"]
                                                                style:UIBarButtonItemStyleBordered
                                                               target:txtFieldOrTextView
                                                               action:@selector(resignFirstResponder)];

    numberToolbar.items = [NSArray arrayWithObjects:btnDone,nil];
    [numberToolbar sizeToFit];

    if([txtFieldOrTextView isKindOfClass:[UITextField class]])
    {
         ((UITextField *)txtFieldOrTextView).inputAccessoryView = numberToolbar;
    }
    else if([txtFieldOrTextView isKindOfClass:[UITextView class]])
    {
         ((UITextView *)txtFieldOrTextView).inputAccessoryView = numberToolbar;
    }
}
1

Sie sollten UIToolbar zum Seitenanfang von UITextView hinzufügen, um die Verwendung von shouldChangeTextIn zu vereinfachen.

In Swift 4

let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
        toolbar.barStyle = .default
        toolbar.items = [
            UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),
            UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(doneAction))
        ]
        textView.inputAccessoryView = toolbar
@objc func doneAction(){
 self.textView.resignFirstResponder()
}
0
Giang

Ich weiß, es ist nicht die genaue Antwort auf diese Frage, aber ich habe diesen Thread gefunden, nachdem ich im Internet nach einer Antwort gesucht hatte. Ich gehe davon aus, dass andere dieses Gefühl teilen.

Dies ist meine Abweichung vom UITapGestureRecognizer, die ich für zuverlässig und einfach zu verwenden halte - setze einfach den Delegaten der TextView auf den ViewController.

Anstelle von ViewDidLoad füge ich den UITapGestureRecognizer hinzu, wenn die Textansicht zum Bearbeiten aktiviert wird:

-(void)textViewDidBeginEditing:(UITextView *)textView{
    _tapRec = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];

    [self.view addGestureRecognizer: _tapRec];
    NSLog(@"TextView Did begin");
}

Wenn ich außerhalb der Textansicht tippe, wird der Bearbeitungsmodus der Ansicht beendet und der UITapGestureRecognizer entfernt sich von selbst, sodass ich weiterhin mit anderen Steuerelementen in der Ansicht interagieren kann.

-(void)tap:(UITapGestureRecognizer *)tapRec{
    [[self view] endEditing: YES];
    [self.view removeGestureRecognizer:tapRec];
    NSLog(@"Tap recognized, tapRec getting removed");
}

Ich hoffe das hilft. Es scheint so offensichtlich, aber ich habe diese Lösung noch nie im Internet gesehen - mache ich etwas falsch?

0
BGC

Vergessen Sie nicht, den Delegaten für die Textansicht festzulegen. Andernfalls funktioniert resignfirstresponder nicht.

0
Ron Holmes

Versuche dies .

NSInteger lengthOfText = [[textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];
0
Hiren Panchal

Für Xcode 6.4. Swift 1.2.:

   override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
    {
        super.touchesBegan(touches, withEvent: event)
        if let touch = touches.first as? UITouch
        {
            self.meaningTextview.resignFirstResponder()
        }
    }
0
MB_iOSDeveloper