2013-12-01 4 views
3

В моем приложении я нажимаю кнопку, и она подтягивает модальный лист презентаций (для iPad). В рамках этого модального представления у меня есть scrollview в моем основном представлении и 1 текстовое поле в моем представлении прокрутки.iOS - как убрать клавиатуру?

view controller 
    view 
     scrollview 
      text field 

Ничего, что я пробовал, отказывается от клавиатуры, и я не знаю почему. Единственное, что происходит, это мигающий курсор в текстовом поле. Мой класс является делегатом для scrollview и текстовых полей. Вот что я пробовал:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    [self.titleTextField resignFirstResponder]; 
    [self.titleTextField endEditing:YES]; 
    [self.view endEditing:YES]; 
    [self.view resignFirstResponder]; 
    [self.scrollView endEditing:YES]; 
    [self.scrollView resignFirstResponder]; 
} 

Метод вызван, но клавиатура не исчезает. Может ли кто-нибудь помочь мне или хотя бы сказать мне, почему?

Вот как я представляю эту точку зрения modalpresentation:

(она исходит от tableviewcontroller)

didSelectRowAtIndexPath

EditVideo *targetController = [self.storyboard instantiateViewControllerWithIdentifier:@"editVideo"]; 

     targetController.delegate = self; 

     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:targetController]; 

     navigationController.modalPresentationStyle = UIModalPresentationFormSheet; 

     [self presentViewController:navigationController animated:YES completion:nil]; 

     [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 
+0

Я предполагаю, что ваш titleTextField либо не является первым ответчиком, либо вы делаете это снова в другом месте вашего кода. Смотрите также: http: //stackoverflow.com/a/1823360/312312 – Lefteris

+0

Вы подтвердили, что являетесь первым ответчиком? Попробуйте код Steve's gewtfirstresponder для UIView: http://stackoverflow.com/questions/8772468/get-firstresponder-in-objective-c Кроме того, scrollViewDidScroll вызывается после прокрутки, и вы можете вернуть фокус обратно на прокрутку и повторно запустить первый ответчик? – Aardvark

+0

Когда я пытаюсь найти firstResponder, он возвращает null. –

ответ

4

На Статкевич любой любой не полноэкранный представлены ViewController, вы должны Внесите -(BOOL)disablesAutomaticKeyboardDismissal, чтобы вернуть NO, чтобы закрыть клавиатуру.

- (BOOL)disablesAutomaticKeyboardDismissal 
{ 
    return NO; 
} 

После того, как это реализовано, вы можете позвонить по телефону [self.view endEditing:YES];.

Редактировать: Другая распространенная причина этой проблемы: NO от - (BOOL)textFieldShouldEndEditing:(UITextField *)textField. Внесите этот метод в UITextFieldDelegate и дайте ему безоговорочно вернуть YES, чтобы доказать, что это не фактор.

+0

Пробовал это, к сожалению, еще ничего :( –

+0

@JosueEspinosa: Вы реализовали его как в представленном (Form Sheet) контроллере вида, так и в представлении? – Holly

+0

Я сделал. Единственное, что меняется, это текстовое поле теряет свой курсор, клавиатура остается там, где она находится. –

Смежные вопросы