В моем первом ViewController я делаю один UITextField, чтобы стать FirstResponder, и фокус остается, что TextField и клавиатура появляются автоматически. Он просто отлично работает. Но тогда я представляю еще один дочерний ViewController, у которого есть 3 UITextFields (A, B, C) в этом ViewController, я установил первый UITextField (скажем A), чтобы стать FirstResponder в этом дочернем ViewController, фокус остается A, но клавиатура не появляется , Я искал все ответы весь день, но ничего не нашел.Почему UITextField становитсяFirstResponder не показывает клавиатуру в моем контролере просмотра?
Вот код.
в родительском VC, я установил:
TestVC *testVC= [[TestVC alloc] init];
testVC.modalPresentationStyle=UIModalPresentationFormSheet;
[detailvc presentViewController:testVC animated:NO completion:nil];
в детской VC TestVC, я установил:
UITextField *v_matcode=[MyViewUtil addTextField:@"" x:10 y:10 width:100 height:40];
[self.view addSubview:v_matcode];
[v_matcode becomeFirstResponder];
и это addTextField():
+(UITextField *) addTextField:(NSString *)text x:(int)_x y:(int)_y width:(int)_width height:(int)_height {
UITextField *v_txt = [[UITextField alloc] init];
v_txt.frame= CGRectMake(_x, _y, _width, _height);
v_txt.borderStyle = UITextBorderStyleRoundedRect;
return v_txt;}
v_matcode имеет фокус, но клавиатура не появляется. Но если я не установлю это текстовое поле getFirstResponder и не позволяю пользователю коснуться его, клавиатура появится правильно. Почему это? Установка
Как выглядит код '' addTextField: '? До сих пор похоже, что вы делаете все правильно, но «addTextField:' »- это какой-то пользовательский метод, поэтому он может делать что-то неловкое. –
Я согласен с @ michael-dautermann, можете ли вы отправить код метода «addTextField:», который мог бы помочь. – 8Ours
Не удается проверить его сейчас, но попробуйте обернуть вызов toFirstResponder внутри dispatch_async (dispatch_get_main_queue(),^{/ * call here * /}); –