How to hide/Remove the search bar on Contact Picker

青春壹個敷衍的年華 提交于 2019-12-02 05:24:55

问题


I am adding a contact picker in my app, however, I do not want the search functionality.

How to hide/Remove the search bar on Contact Picker (ABPeoplePickerNavigationController)?


回答1:


static BOOL foundSearchBar = NO;
- (void)findSearchBar:(UIView*)parent mark:(NSString*)mark {

    for( UIView* v in [parent subviews] ) {

        //if( foundSearchBar ) return;

        NSLog(@"%@%@",mark,NSStringFromClass([v class]));

        if( [v isKindOfClass:[UISearchBar class]] ) {
            [(UISearchBar*)v  setTintColor:[UIColor blackColor]];
            v.hidden=YES;
//            foundSearchBar = YES;
            break;
        }
        if( [v isKindOfClass:[UITableView class]] ) {
            CGRect temp =v.frame;
            temp.origin.y=temp.origin.y-44;
            temp.size.height=temp.size.height+44;
            v.frame=temp;
            //foundSearchBar = YES;
            break;
        }
        [self findSearchBar:v mark:[mark stringByAppendingString:@"> "]];
    }
}

call above method after picker is presented as below:

-(void)showPeoplePickerController
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    picker.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    // Display only a person's phone, email, and birthdate
    NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty], 
                                [NSNumber numberWithInt:kABPersonEmailProperty],
                                [NSNumber numberWithInt:kABPersonBirthdayProperty],[NSNumber numberWithInt:kABPersonAddressProperty],nil];

    picker.displayedProperties = displayedItems;
    // Show the picker
    [self presentViewController:picker animated:YES completion:nil];
    [self findSearchBar:[picker view] mark:@"> "];

    [picker release];
}



回答2:


-(void)showAddressBook {
    ABPeoplePickerNavigationController *addressBook = [[ABPeoplePickerNavigationController alloc] init];
    [addressBook setPeoplePickerDelegate:self];
    addressBook.delegate = self;
    addressBook.navigationBar.topItem.title = @"iPhone Contacts";
    UIView *view = addressBook.topViewController.view;
    for (UIView *v in view.subviews) {
        if ( [v isKindOfClass:[UITableView class]] ) {
            CGRect temp = v.frame;
            temp.origin.y = temp.origin.y - 44;
            temp.size.height = temp.size.height + 44;
            v.frame = temp;
        }
    }
    [addressBook release];
}

- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if ([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]]) {
        UISearchDisplayController *searchDisplayController = navigationController.topViewController.searchDisplayController;
        [searchDisplayController.searchBar setHidden:YES];
    }
}


来源:https://stackoverflow.com/questions/17141210/how-to-hide-remove-the-search-bar-on-contact-picker

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!