【问题标题】:How to change inputView of UISearchBar in iOS7?如何在 iOS7 中更改 UISearchBar 的 inputView?
【发布时间】:2013-11-29 05:02:08
【问题描述】:

在 iOS6 中,我使用下面的代码来改变 UISearchbar 的 inputView

for (UIView *view in _searchBar.subviews) {
    if ([view isKindOfClass: [UITextField class]]) {
        UITextField* textField = (UITextField*)view;
        [textField setInputView:_myKeyboard];
        break;
    }
}

iOS7 的UISearchbar 变了,不知道怎么找textField 来改变inputView。 请帮忙!谢谢!

【问题讨论】:

    标签: ios ios7 uisearchbar inputview


    【解决方案1】:

    iOS7中subview的层次结构发生了变化,可以使用如下代码:

    // subviews
    NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews];
    for (UIView *view in searchBarSubViews) {
        if([view isKindOfClass:[UITextField class]])
        {
            UITextField* search=(UITextField*)view;
            [search setFont:[UIFont fontWithName:@"MyCustomFont" size:15]];
            search.delegate = self;
    
            [search setInputView:self.customKeyboard];
            [self.customKeyboard setTextView:search];
        }
    }
    [self.searchBar reloadInputViews];
    

    【讨论】:

    • 您也可以使用以下命令从 UISearchBar 获取 UITextField:[self.searchBar valueForKey:@"_searchField"]
    【解决方案2】:

    使用以下代码:

    NSArray *subViewsOfSearchBar = [[self.YOurSearchBar.subviews objectAtIndex:0] subviews];
    for(int i =0; i< subViewsOfSearchBar.count; i++) {
        if([[subViewsOfSearchBar objectAtIndex:i] isKindOfClass:[UITextField class]])
        {
            UITextField *searchTxtField=(UITextField*)[subViewsOfSearchBar objectAtIndex:i];
            [searchTxtField setInputView:self.customKeyboard];
        }
    }
    [self.searchBar reloadInputViews];
    

    【讨论】:

      【解决方案3】:

      试试这个代码:

      for (UIView *view in _searchBar.inputView.subviews) {
              if ([view isKindOfClass: [UITextField class]]) {
                  UITextField* textField = (UITextField*)view;
                  [textField setInputView:_myKeyboard];
                  break;
              }
          }
      

      在 iOS 7 子视图中不起作用。从 iOS7 UI 对象有一个额外的包装器/容器。可能这段代码会对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        • 1970-01-01
        • 2013-10-10
        • 2013-11-24
        • 2023-04-10
        相关资源
        最近更新 更多