2013-04-29 2 views
1

У меня есть 3 текстовых поля в одном, я внедрил UIPickerView и отключил клавиатуру, используя resignFirstResponder, но когда я нажимаю на другую, то и клавиатура, и pickerview видны.Клавиатура и пикелерПросмотреть все обои для рабочего стола

+0

я думаю, что его происходит в - (BOOL) textFieldShouldBeginEditing UITextFields в делегатом метод пост этот метод .. –

+0

вы должны скрыть 'UIPickerView' – Novarg

+0

, когда я первый нажмите на textField1, а затем непосредственно на поля 2, где я использовал [resignFirstresponder поля 2], так что я могу отобразить мой pickerView, что происходит, моя клавиатура TextField1 все еще видна вместе с pickerview. Я хочу только pickerview. – Kernal

ответ

1

набор каждый UITextField «s Делегат self, а затем просто поставить этот метод в .m класса .. В этом коде я просто установить кадр yourPickerView с 500y точки вместо того, что вы можете скрыть UIPickerView ..

Этот код Скрывает UIPickerView с анимацией, как клавиатура ..

UPDATE:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
     if (textField == TextField1) { 
      [UIView beginAnimations:nil context:NULL]; 
      [UIView setAnimationDuration:0.3]; 
      CGRect frame = yourPickerView.frame; 
      frame.origin.y = 500; 
      yourPickerView.frame = frame; 
      [UIView commitAnimations]; 
      return YES; 
     } 
     else if (textField == TextField2) { 
      [TextField1 resignFirstResponder]; 
      [UIView beginAnimations:nil context:NULL]; 
      [UIView setAnimationDuration:0.3]; 
      CGRect frame = yourPickerView.frame; 
      frame.origin.y = 107; 
      yourPickerView.frame = frame; 
      [UIView commitAnimations]; 
      return NO; 
     } 
     return YES; 
} 
+0

@ prabhanjank89 с вышеуказанным кодом вы можете скрыть UIPickerView как системную клавиатуру UITextField .. :) надеюсь, что это вам полезно ... –

+0

, когда я сначала нажимаю TextField1, а затем прямо на TextField2, где я использовал [TextField2 resignFirstresponder], чтобы я могу отобразить мой pickerView, что происходит, моя клавиатура TextField1 все еще видна вместе с pickerview. Я хочу только pickerview. – Kernal

+0

ohhh wait just put condition like my updated code wait ... –

1

Вам нужно знать, что именно показать. Вы можете использовать [self.view endEditing:YES];, чтобы удалить клавиатуру, когда это необходимо, и реализовать свой собственный метод, чтобы скрыть сборщик, когда это необходимо.

+0

2 текстовых поля, один для ввода текста (inputTextField) в нем, другой для отображения содержимого pickerView. когда я нажимаю 1-го текстового поля (inputTextField) на pickerView TextField, видны как pickerView, так и клавиатура. но я хочу только pickerView; я смирился с pickerViewTextField. – Kernal

2

создать локальный экземпляр UIPickerView, и в методе делегата от TextFiled textFieldDidBeginEditing проверки для видимости UIPickerView, если Visible скрыть это

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    if(![_pickerView isHidden]) 
    { 
     [_pickerView setHidden:YES]; 
    } 
    //... 
} 
0

Вы должны поставить эту линию первый, когда вы собираетесь Отобразите PickerView.

[self.view endEditing:YES]; 

Теперь после этого PickerView Откроет & фокус не будет на TextField после написания следующей строки, так что вам нужно сделать, это поставить кнопку Готово над Picker & передать выбранное значение Picker для этого TextField.

Попробуйте этот код:

- (void)textFieldDidBeginEditing:(UITextField *)aTextField 
{ 
    if(txtVisitDate.isEditing == TRUE) 
    { 
     if ([txtPlaceName isFirstResponder]) 
     { 
      [txtPlaceName resignFirstResponder]; 
     } 
     [aTextField resignFirstResponder]; 

     pickerViewPopup = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
     pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 0, 0)]; 
     pickerView.datePickerMode = UIDatePickerModeDate; 
     pickerView.hidden = NO; 
     pickerView.date = [NSDate date]; 

     UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
     pickerToolbar.barStyle = UIBarStyleBlackOpaque; 
     [pickerToolbar sizeToFit]; 

     NSMutableArray *barItems = [[NSMutableArray alloc] init];  
     UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
     [barItems addObject:flexSpace]; 

     UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)]; 
     [barItems addObject:doneBtn]; 

     UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)]; 
     [barItems addObject:cancelBtn]; 

     [pickerToolbar setItems:barItems animated:YES]; 

     [pickerViewPopup addSubview:pickerToolbar]; 
     [pickerViewPopup addSubview:pickerView]; 
     [pickerViewPopup showInView:self.view]; 
     [pickerViewPopup setBounds:CGRectMake(0,0,320, 475)]; 
    } 
} 

Надеется, что это поможет.

+0

2 текстовых поля, один для ввода текста (inputTextField) в нем, другой для отображения содержимого pickerView. когда я нажимаю 1-го текстового поля (inputTextField) на pickerView TextField, видны как pickerView, так и клавиатура. но я хочу только pickerView; я смирился с pickerViewTextField. – Kernal

+0

Итак, когда вы сдались TextField, что произойдет? вы можете скрыть клавиатуру, если нет, чем пытаться поставить выше строки. – Mayur

+0

клавиатура TextField будет скрываться только при щелчке «return», но когда элемент управления достигнет pickerViewTextfield при прямом щелчке как pickerView, так и Keyboard видны – Kernal

1

Установите сборщик как inputView для текстового поля:

myTextField.inputView = self.myPickerView; 

Таким образом, вам не нужно обрабатывать отображение клавиатуры/сборщика на всех. Это все сделано для вас.

Смежные вопросы