webentwicklung-frage-antwort-db.com.de

Aktivieren Sie die Schaltfläche Suchen, wenn die Suchzeichenfolge in der Standardsuchleiste leer ist

In meiner Anwendung verwende ich die Suchfunktion mit der Standardeinstellung IOS Suchleiste. Wenn ich eine Zeichenfolge für die Suche platziere, funktioniert sie einwandfrei, aber nach der ersten Suche muss ich die gesamte Datenquelle (ursprünglichen Inhalt) anzeigen. Meine Funktionalität Ist die Suchzeichenfolge leer, wird die gesamte Datenquelle angezeigt. Mein Problem ist, wenn ich die Suchzeichenfolge in der Standardsuchleiste leer mache, wird die Suchschaltfläche automatisch ausgeblendet. Ich muss die Suchschaltfläche aktivieren, auch wenn die Zeichenfolge leer ist. Bitte führen Sie mich aus, um dieses Problem zu beheben.

enter image description here

Vielen Dank.

24
Ganapathy

Bitte schreiben Sie den folgenden Code für Sie hilfreich :) Diese Code-Anzeige Schaltfläche "Suchen" wenn Sie eine leere Zeichenfolge haben.

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{
    [self.searchBar setShowsCancelButton:YES animated:YES];
    self.tblView.allowsSelection = NO;
    self.tblView.scrollEnabled = NO;

    UITextField *searchBarTextField = nil;
    for (UIView *subview in self.searchBar.subviews)
    {
        if ([subview isKindOfClass:[UITextField class]])
        {
            searchBarTextField = (UITextField *)subview;
            break;
        }
    }
    searchBarTextField.enablesReturnKeyAutomatically = NO;
}

Probieren Sie es aus :) Danke :)

23
iPatel

Eigentlich können Sie einfach searchBar.enablesReturnKeyAutomatically = NO; Tested auf iOS 7+ einstellen

30
laura

Verwenden Sie den folgenden Code, um den Return-Schlüssel ohne Text zu aktivieren

  UITextField *searchField = nil;
  for (UIView *subview in searchBar.subviews) {
    if ([subview isKindOfClass:[UITextField class]]) {
      searchField = (UITextField *)subview;
      break;
    }
  }

  if (searchField) {
    searchField.enablesReturnKeyAutomatically = NO;
  }
2
milanpanchal

Swift 3/iOS 10

for view1 in searchBar.subviews {
        for view2 in view1.subviews {
            if let searchBarTextField = view2 as? UITextField {
                searchBarTextField.enablesReturnKeyAutomatically = false
                break
            }
        }
    }
2
Alocus

searchBar.enablesReturnKeyAutomatically = NO;

2
Jim75

Es ist fast das gleiche wie die akzeptierte Antwort, aber wenn Sie mit iOS 7 arbeiten, benötigen Sie aufgrund einiger Änderungen in der Suchleiste eine zusätzliche for-Schleife

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{
    [self.searchBar setShowsCancelButton:YES animated:YES];
    UITextField *searchBarTextField = nil;
    for (UIView *mainview in self.searchBar.subviews)
    {
        for (UIView *subview in mainview.subviews) {
            if ([subview isKindOfClass:[UITextField class]])
            {
                searchBarTextField = (UITextField *)subview;
                break;
            }

        }  
    }
    searchBarTextField.enablesReturnKeyAutomatically = NO;
}
1
Bhumit Mehta

Verwenden Sie dies, es funktioniert für iOS 6 und 7:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)search
{
    UITextField *searchBarTextField = nil;
    for (UIView *mainview in search.subviews) {
        if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
            if ([mainview isKindOfClass:[UITextField class]]) {
                searchBarTextField = (UITextField *)mainview;
                break;
            }
        }
        for (UIView *subview in mainview.subviews) {
            if ([subview isKindOfClass:[UITextField class]]) {
                searchBarTextField = (UITextField *)subview;
                break;
            }
        }
    }
    searchBarTextField.enablesReturnKeyAutomatically = NO;
}
1
Ollie

Erstellen Sie ein benutzerdefiniertes view & auf diesem view fügen Sie ein button hinzu, um die Tastatur zu entfernen. Fügen Sie diese Ansicht hinzu, wenn - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBardelegate Methode von UISearchBar. Klicken Sie auf diese Schaltfläche, um die Tastatur sowie das view, das Sie für button erstellt haben, neu zu bestimmen. Wenn Sie nach diesem Knopf suchen möchten, klicken Sie auf, dann können Sie es auch tun. Bitte sehen Sie das Bild für weitere Erläuterungen. 

enter image description here

1
Girish

Ist vielleicht ein Apple-Fehler? Seit der Einstellung der .xib-Datei funktioniert der automatische Aktivierungsschlüssel nicht wie erwartet.

Fügen Sie einfach den folgenden Code hinzu:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    searchBar.enablesReturnKeyAutomatically = NO;

    return YES;
}
1
Taka

Wenn Sie nach einer etwas eleganteren Lösung suchen, können Sie das Textfeld in der Suchleiste mithilfe von Rekursion finden, wie unten gezeigt. Dies sollte für iOS 6, 7 oder andere zukünftige Betriebssysteme funktionieren, die keine Abschreibungen von Apple zulassen.

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    UITextField* textField = [self findTextFieldInView:searchBar];
    if (textField) {
        textField.enablesReturnKeyAutomatically = NO;
    }
}

-(UITextField*)findTextFieldInView:(UIView*)view {
    if ([view isKindOfClass:[UITextField class]]) {
        return (UITextField*)view;
    }
    for (UIView* subview in view.subviews) {
        UITextField* textField = [self findTextFieldInView:subview];
        if (textField) {
            return textField;
        }
    }
    return nil;
}
1
ufmike

Einfache Swift-Version:

if let searchTextField:UITextField = searchBar.subviews[0].subviews[2] as? UITextField {
                searchTextField.enablesReturnKeyAutomatically = false
}
0
odemolliens

Hier ist eine Lösung mit Swift. Fügen Sie es einfach in Ihre viewDidLoad-Funktion ein und vergewissern Sie sich, dass Sie ein IBOutlet Ihrer searchBar im Code haben. (In meinem Beispiel unten ist die inputSearchBar-Variable das IBOutlet)

   // making the search button available when the search text is empty
    var searchBarTextField : UITextField!
    for view1 in inputSearchBar.subviews {
        for view2 in view1.subviews {
            if view2.isKindOfClass(UITextField) {
                searchBarTextField = view2 as UITextField
                searchBarTextField.enablesReturnKeyAutomatically = false
                break
            }
        }
    }
0
rsc