Входной доступ к UITextField

#uitextfield

#uitextfield

Вопрос:

Мне нужно прикрепить панель инструментов с UITextField внутри к клавиатуре.

Что, если я сделаю всю панель инструментов (которая, я думаю, является супер-представлением текстового поля) inputAccessoryView ее текстового поля?

Я имею в виду вот так:

TextField.inputAccessoryView = Панель инструментов; // Текстовое поле находится внутри панели инструментов

Я пытался это сделать, но у меня пока не получилось.

Кто-нибудь может помочь?

Или есть другой способ достичь того, чего я хочу?

Ответ №1:

    - (void)viewDidLoad
      {
        [self createAccessoryView];

        [textField setDelegate:self];
        [textField setKeyboardType:UIKeyboardTypeDefault];
        [textField setInputAccessoryView:fieldAccessoryView];


      }


- (void)createAccessoryView
        {

            CGRect frame = CGRectMake(0.0, self.view.bounds.size.height, self.view.bounds.size.width, 44.0);
            fieldAccessoryView = [[UIToolbar alloc] initWithFrame:frame];
            fieldAccessoryView.barStyle = UIBarStyleBlackOpaque;
            fieldAccessoryView.tag = 200;

            [fieldAccessoryView setBarStyle:UIBarStyleBlack];

            UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
            UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone  target:self action:@selector(done:)];

            UISegmentedControl* segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Previous", @""), NSLocalizedString(@"Next", @""), nil]];
            [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
            segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
            [segmentedControl setMomentary:YES];
            UIBarButtonItem *segmentButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

            [fieldAccessoryView setItems:[NSArray arrayWithObjects:segmentButton, spaceButton, doneButton, nil] animated:NO];
            [segmentButton release];
            [spaceButton release];
            [doneButton release];
            [segmentedControl release];

        }
  

Ответ №2:

Когда вы настраиваете свойство? Возможно, вы устанавливаете его после того, как представление уже загружено.

Попробуйте установить его в

 - (void) viewDidLoad