0

My Share Extension не требует ввода пользователем кроме конфигурации в виде таблицы, поэтому я пытаюсь скрыть клавиатуру, когда представление представлено в Safari. Я могу запустить мой код в симуляторе, но, когда я тестирую свое устройство, я расширяю расширение Share, и Safari зависает.Не удается скрыть клавиатуру с помощью SLComposeServiceViewController

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

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    self.textView.text = @"\n Place Holder Text"; 
    self.textView.editable = NO; 
} 

Как хорошо, я попробовал его в loadView, так что где SLComposeServiceViewController устанавливает TextView и TextView делегата.

-(void)loadView{ 
    [super viewWillAppear:animated]; 
    self.textView.text = @"\n Place Holder Text"; 
    self.textView.editable = NO; 
} 

И просто для удовольствия

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{ 

    return NO; 
} 

Все эти работы на тренажере, но не на моем устройстве.

Что может случиться?

Есть ли какое-то уведомление или наблюдателя, что я (или сафари) отсутствует

+0

Если я правильно помню, класс порождаемой прошивки иметь только для чтения 'textField', поэтому установка его' editable' государство 'NO', скорее всего, не будет делать ничего полезного. Я полагаю, вы могли бы попытаться «resignFirstResponder», когда расширение поддерживает всплывающее окно. Но есть вероятность, что подкласс «UIViewController» и создание собственного пользовательского контроллера представлений будет самым простым путем, если вы не хотите использовать готовое решение, которое предоставляется с помощью 'SLComposeServiceViewController' –

ответ

3

Вам просто нужно поставить свой код в функции «viewDidAppear». Он отлично работает для меня.

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.textView setText:@" Place Holder Text"]; 
    [self.textView setEditable: NO]; 
} 
Смежные вопросы