【问题标题】:set UISearchBar Focused programmatically以编程方式设置 UISearchBar Focused
【发布时间】:2024-01-15 09:54:01
【问题描述】:

我在 UITabBarController 上有 2 个选项卡,每个选项卡内都有一个导航,在第一个选项卡上有一个带有 searchBar 的 tableViewController。

在第二个选项卡上,我有另一个搜索栏,但是,我想设置这个的 onClick,转到第一个选项卡并聚焦搜索栏。

我目前可以将搜索栏上的点击重定向到另一个标签,但我不知道如何设置焦点。

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
    UINavigationController *tmp = [self.tabBarController.viewControllers objectAtIndex:0];
    [tmp popToRootViewControllerAnimated:NO];
    UIViewController *vc = tmp.topViewController;//THIS ONE

    [self.tabBarController setSelectedIndex:0];
    return NO;
}

我在代码中得到的 UIViewController 有我需要的 UISearchBar 对象,我的意思是,superClass.h 是:

#import <UIKit/UIKit.h>

@interface MasterTableViewController : UITableViewController <UISearchBarDelegate>

@property (nonatomic, strong) NSMutableArray *objects;//stuff
@property (nonatomic, strong) NSMutableArray *results;//stuff
@property (nonatomic, strong) IBOutlet UISearchBar *searchBar;//THIS IS MY UISearchBar !

@end

我的问题是我无法获得那个 UISearchBar,我该怎么做? 我怎么能说它从另一个选项卡上的searchBarShouldBeginEditing 方法集中?

【问题讨论】:

    标签: objective-c uinavigationcontroller focus uitabbarcontroller uisearchbar


    【解决方案1】:

    修改您的搜索栏委托方法并检查以下内容:-

          - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;
    

    【讨论】:

    • ??我没有要求方法,“searchBarShouldBeginEditing”只是为了捕捉搜索栏被触摸的时间,如您所见,代码将标签栏控制器重定向到另一个标签,并且在那个新标签上是我需要的地方帮助,所以,错误的答案,或缺少细节......
    • 搜索栏需要调用 becomeFirstresponder 来设置焦点
    • 如果你阅读了这个问题,它会说“我的问题是我无法获得 UISearchBar,我该怎么做?”我不知道如何从我在代码上获得的对象(UIViewController *vc)中获取我的 UISearchBar,如果我尝试将其作为属性获取,则会出现错误...第一响应者也许有效,但我还不能使用它......继续
    • 您可以在 for 循环中检查 view.subviews 的条件,然后检查 view iskindofclass:[UISearchBar class]…
    最近更新 更多