0

Я пытаюсь встроить редактируемый UITextView внутри UIPopoverController, с ... странными результатами. Я сделал следующие шаги:Может ли редактируемый UITextView быть встроен в UIPopoverController?

  1. Создайте пользовательский класс UIViewController и создайте файл .xib с этим контроллером с UITextView внутри него.
  2. Когда действие UI, которое должно вызвать контроллер, происходит (коснитесь внутри), я создаю экземпляр контроллера и его представление из файла .xib.
  3. Я создаю новый UIPopoverController, с контроллером представления, который я просто создавал как представление содержимого.
  4. Я представляю его с presentPopoverFromRect: INview: permittedArrowDirections: анимированные:

Вот пример кода:

- (void)noteButtonPressed:(id)sender { 
    self.noteview = [[MyTextPopupViewController alloc] initWithNibName:@"MyTextPopupViewController" bundle:nil ]; 
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:self.noteview]; 
    self.popover = popoverController; 
    self.popover.delegate = self; 
    [self.popover presentPopoverFromRect:((UIView*)sender).frame 
            inView:self.view 
       permittedArrowDirections:UIPopoverArrowDirectionAny 
           animated:YES]; 
} 

Затем внутри MyTextPopupViewController, я убедиться, что вид текста является первым ответчиком в поднять клавиатуру:

- (void)viewDidAppear:(BOOL)animated { 
    [self.view becomeFirstResponder]; 

    [super viewDidAppear:animated]; 
} 

И все работает ... прямо до этого нет. Иногда он работает отлично; в других случаях, сразу или после нескольких нажатий клавиш, приложение вылетает из цикла основного события (!). Никакое исключение не выбрасывается (по крайней мере, не то, что lldb ловит), но приложение просто останавливается, как на симуляторе, так и на оборудовании.

Любые мысли? Кто-нибудь получил эту работу успешно, или знает наверняка, что это не так?

+0

В 'MyTextPopupViewController' вы реализуете' textView: shouldChangeTextInRange: replacementText: '(или любой другой метод делегата, который может вызвать проблемы здесь)? Если да, отправьте этот код. – lnafziger

+0

Кроме того, вы должны переключить две строки в вашем 'viewDidAppear', чтобы супер было правильно вызвано, прежде чем что-либо делать. – lnafziger

+0

В настоящее время я не применяю ни один из методов UITextViewDelegate. – Christophe

ответ

0

Я думаю, что экземпляр UIPopoverController должен быть свойством в вашем коде.