показать подпредставление, когда UITextField коснулся - PullRequest
1 голос
/ 26 сентября 2011

Я довольно новичок в разработке для iPhone, поэтому прошу прощения за мое невежество.Я немного погуглил и до сих пор не нашел ничего полезного.Вот что я хотел бы сделать:

Я бы хотел всплывающее подпредставление (с остальной частью экрана, отображаемым на заднем плане) при касании UITextField.Всплывающее окно представляет собой калькулятор UIView, который я создал в IB.Похоже, лучше показывать всплывающее окно, чем настраиваемую клавиатуру, в соответствии с рекомендациями Apple для разработчиков.

Вот мой вопрос.Как мне зафиксировать касание на UITextField и как показать подпредставление?

Я пробовал что-то вроде ниже, чтобы показать подпредставление, но не повезло:

    CustomCalculator *customCalc = [[CustomCalculator alloc] initWithNibName:@"CustomCalculator" bundle:nil];

UIViewController *calcController = [self.customCalc.view];

[self.view addSubview:calcController.view];

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Используйте метод делегата:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   //Add your subview here 

   return NO; //this will stop the keyboard from poping up
  }

Таким образом, когда кто-то нажимает на текстовое поле, вместо клавиатуры появляется всплывающее окно.Теперь, когда пользователь взаимодействует с вашим представлением, вам придется напрямую манипулировать строкой в ​​свойстве textfield.text как реакция на нажатие пользователем кнопки в вашем представлении.

0 голосов
/ 26 сентября 2011

Реализуйте UITextFieldDelegate и метод для него:

-(void) textFieldDidBeginEditing:(UITextField *)textField

Вышеупомянутый метод срабатывает при прикосновении к UITextField.Затем вы можете расположить UIPopoverController (я полагаю, именно это вы используете для отображения представления во всплывающем окне), и как только вы закончите, передайте значения обратно в UITextField.Следовательно, представленный представителем popover / viewcontroller должен быть ваш объект текстового поля.

EDIT: После просмотра другого ответа ниже меня поразило, что я забыл рассказать вам, как остановить отображение клавиатуры.Просто сделайте это первой строкой в ​​методе, который я упомянул выше:

    [textField resignFirstResponder];
...