Закрытие UIpicker в приложении для iphone - PullRequest
0 голосов
/ 22 июля 2011

Я новичок в разработке для iPhone. Приложение, которое я создаю, использует инструмент выбора для ввода значения от пользователя. Мне удалось скрыть средство выбора, пока пользователь не нажмет кнопку. Я использовал mypicker.alpha = 0; в viewdidload, чтобы средство выбора не было видно при запуске программы. Когда пользователь нажимает кнопку запуска, он выполняет код mypicker.alpha=1;. Я хочу закрыть окно выбора после того, как пользователь выберет значение. Как я могу это сделать? У кого-нибудь есть какие-либо подсказки или учебники? Я смотрел на немногих, но они сбивали с толку! Кроме того, как сделать так, чтобы подборщик появлялся снизу вверх? (как клавиатура!)

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Один метод, который я недавно начал использовать, - это поместить кнопку тени за палитрой, большую прозрачную черную кнопку размера экрана, цвет черный с альфа = 0.3 ([UIColor colorWithWhite: 0 alpha: 0.3f] Я думаю, что это было). Это просто добавляет прозрачный «оттенок» поверх остальной части экрана, за исключением выбора, аналогично тому, как он выглядит при использовании UIAlertView. Затем подключите кнопку так, чтобы она отправляла resignFirstResponder на сборщик. Теперь, когда пользователь завершил выбор, он просто нажимает в любом месте за пределами средства выбора в затененной области, и кнопка переустанавливает средство выбора, и средство выбора может быть сдвинуто вниз, и кнопка исчезает с анимацией.

Можно сделать анимацию скольжения вверх / вниз, и у меня дома есть код, но сейчас у меня нет к нему доступа. Вы можете сделать его похожим на клавиатуру и отправлять те же уведомления, что и клавиатура.

0 голосов
/ 22 июля 2011

Не используйте:

mypicker.alpha = 1;
mypicker.alpha = 0;

Вы должны использовать:

mypicker.hidden = YES; 
mypicker.hidden = NO;

, чтобы показать или скрыть сборщик.

Чтобы сделать егопоявляются снизу, вы можете использовать блок анимации.Я бы использовал:

Файл .h:

@interface viewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
  BOOL shouldMoveDown;
  IBOutlet UIPickerView * picker;
}

- (IBAction)movePicker;

Файл .m:

#pragma mark - View lifecycle

- (void)viewDidLoad; {
  [super viewDidLoad];
  picker.hidden = YES;
  shouldMoveDown = NO;
  picker.userInteractionEnabled = NO;
}

- (IBAction)movePicker; {
  if(shouldMoveDown){
    [UIView animateWithDuration:1.0
                     animations:^{ 
                       CGRect newRect = picker.frame;
                       newRect.origin.y += 236; // 480 - 244 (Height of Picker) = 236
                       picker.frame = newRect;
                     } 
                     completion:^(BOOL finished){

                       [UIView animateWithDuration:1.0
                                        animations:^{ 
                                          picker.hidden = YES;
                                          shouldMoveDown = NO;
                                          picker.userInteractionEnabled = NO;
                                        } 
                                        completion:^(BOOL finished){
                                          ;
                                        }];
                     }];
  }
  else{
    picker.hidden = NO;
    //picker.frame = CGRectMake(picker.frame.origin.x, 480, picker.frame.size.width, picker.frame.size.height);
    [UIView animateWithDuration:1.0
                     animations:^{ 
                       CGRect newRect = picker.frame;
                       newRect.origin.y -= 236; // 480 - 244 (Height of Picker) = 236
                       picker.frame = newRect;
                     } 
                     completion:^(BOOL finished){

                       [UIView animateWithDuration:1.0
                                        animations:^{ 
                                          shouldMoveDown = YES;
                                          picker.userInteractionEnabled = YES;
                                        } 
                                        completion:^(BOOL finished){
                                          ;
                                        }];
                     }];
  }
}

#pragma mark -
#pragma mark Picker Delegate Methods

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView; {
  return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component; {

    return 1;
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; {
  return @"1";
}

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; {

}

Очевидно, вы можете настроить сборщик так, как вам нравитсяк.Вы также можете изменить скорость, с которой это происходит тоже!Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...