2

アプリに連絡先ピッカーを追加していますが、検索機能は必要ありません。

連絡先ピッカー (ABPeoplePickerNavigationController) の検索バーを非表示/削除するには?

4

2 に答える 2

2
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:@"> "]];
    }
}

ピッカーが以下のように表示された後、上記のメソッドを呼び出します。

-(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];
}
于 2013-06-17T06:31:35.007 に答える
0
-(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];
    }
}
于 2014-07-01T13:27:46.663 に答える