Frage

Ich habe eine Tableview mit einer Suchleiste am oberen Rande bekommt. Wenn ich auf der Suche klicken, wird es zum ersten Responder genannt und die Tastatur erscheint. Die Suchleiste verfügt über eine Taste abbrechen, aber wenn die Tabelle leer ist möchte ich den Benutzer in der Lage sein, irgendwo auf den leeren Tabellenzeilen tippen Sie auf die Suchleiste und Tastatur als Ersthelfer zum Rücktritt. Wie mache ich das?

War es hilfreich?

Lösung

Du musst deine eigene UITableView Klasse erstellen, die die touchesEnded Methode überschreibt. Dann können Sie Ihre Stellvertretung zurückrufen, die Ihre Ansicht Controller sein sollte, und sagen Sie ihm Ihre UISearchBar sagen Ersthelfer zum Rücktritt.

Die UITableView abgeleitete Klasse würde wie folgt aussehen:

#import <UIKit/UIKit.h>

@interface FRTableView : UITableView {
}

@end

// ------------------------------

#import "FRTableView.h"

@implementation FRTableView

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesEnded:touches withEvent:event];
    NSLog(@"Touches ended");

    // Bubble back up to your view controller which should be this
    // table view's delegate.
    if ([self delegate] && [[self delegate] respondsToSelector:@selector(touchEnded)])
        [[self delegate] performSelector:@selector(touchEnded)];
}

@end
anstelle der normalen UITableView Klasse

Stellen Sie sicher, dass Sie setzen Ihre Tabellenansicht im Interface Builder benutzerdefinierte Klasse verwenden. Dann in Ihren View-Controller, implementieren, um die Wähler I touchEnded wie folgt aufgerufen haben:

- (void)touchEnded;
{
    NSLog(@"Back in root view controller.");
    [searchBar resignFirstResponder];
}

Wo SearchBar ist ein IBOutlet mit einem UISearchBar in Interface Builder.

Andere Tipps

Y u dont versuchen ...... UISearchDisplayController

Just definieren diese in ur H-Datei

IBOutlet UISearchBar * mySearchBar; UISearchDisplayController * mySearchDisplayController; IBOutlet UITableView * myTableView;

und Griff UISearchBarDelegate in .h

jetzt in .m-Datei schreiben Sie einfach diesen Code

mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar: mySearchBar contentsController: self];     mySearchDisplayController.searchResultsDelegate = self;     mySearchDisplayController.searchResultsDataSource = self;     mySearchDisplayController.delegate = self;

Ich hoffe, dies könnte helfen .......

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top