Customizing search bar in iPhone application Development

后端 未结 5 670
梦如初夏
梦如初夏 2021-02-06 17:34

In my application I have to add a search bar at the head of the tableview. I am able to add the searchbar but problem is without adding default search bar of ios can i add my cu

相关标签:
5条回答
  • 2021-02-06 17:56

    Look for Apple DOC for UISearchBar

    enter image description here

    You have bunch of methods there to get whatever you want

    You can get UITextView Inside the search bar by

    UITextField *textField = [searchBar.subviews objectAtIndex:2];
    
    if ([textField isKindOfClass:[UITextField class]]) {
        //Do your customization
    }
    

    Again look for AppleDoc for UITextField. You have bunch of methods for that also.

    0 讨论(0)
  • 2021-02-06 17:59

    Yeah definitely. You can make your custom search bar (which is a sub-class of UIView) and add it as subview to the tableHeaderView.

    0 讨论(0)
  • 2021-02-06 18:08

    I think it's better just set all properties of UISearchBar when it is loaded.

    @interface MySearchBar : UISearchBar
    
    @end
    
    
    @implementation MySearchBar
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            [self myInitialize];
        }
        return self;
    }
    
    -(void)awakeFromNib
    
    {
        [super awakeFromNib];
        [self myInitialize];
    }
    
    -(void)myInitialize
    {
        self.backgroundImage = [UIImage imageNamed:@"image.png"];
    
        for (UIView* subview in self.subviews) {
            if ([subview isKindOfClass:[UITextField class]]) {
                //customize text field
                UITextField* textfield = (UITextField*) subview;
            }
        }
    }
    
    @end
    
    0 讨论(0)
  • 2021-02-06 18:09
    [[searchBarDesign.subviews objectAtIndex:0] removeFromSuperview];
    

    here searchBarDesign is my searchBar name.

    0 讨论(0)
  • 2021-02-06 18:10

    you can subclass the UISearchBar and override the layoutSubviews method :

    - (void)layoutSubviews {
       UITextField *searchField;
       NSUInteger numViews = [self.subviews count];
       for(int i = 0; i < numViews; i++) {
          if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
            searchField = [self.subviews objectAtIndex:i];
          }
       }
       if(!(searchField == nil)) {
           searchField.textColor = [UIColor whiteColor];
           [searchField setBackground: [UIImage imageNamed:@"yourImage.png"] ];
           [searchField setBorderStyle:UITextBorderStyleNone];
       }
    
       [super layoutSubviews];
    }
    

    Also you can :

    //to clear searchbar backgraound
    - (void) clearSearchBarBg
    {
        for (UIView *subview in theSearchBar.subviews) 
        {
            if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
            {
                [subview removeFromSuperview];
                break;
            }
        }
    }
    
    //display showSearchButtonInitially in a keyboard 
    - (void)showSearchButtonInitially
    {
        UIView * subview;
        NSArray * subviews = [theSearchBar subviews];
    
        for(subview in subviews)
        {
            if( [subview isKindOfClass:[UITextField class]] )
            {
                NSLog(@"setEnablesReturnKeyAutomatically");
                [((UITextField*)subview) setEnablesReturnKeyAutomatically:NO];
                ((UITextField*)subview).delegate=self;
                [((UITextField*)subview) setEnabled:TRUE];
                ((UITextField*)subview).borderStyle = UITextBorderStyleNone;
                break;
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题