2015-01-17 5 views
0

У меня есть функция, которая заполняет несколько полей в виде self.view.window. Теперь, если я бегу:Закрытие клавиатуры при нажатии вида - Obj C

/* HIDE KEYBOARD WHEN CLICKED AWAY */ 
    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
    gestureRecognizer.cancelsTouchesInView = NO; //so that action such as clear text field button can be pressed 
    [self.view addGestureRecognizer:gestureRecognizer]; 

внутри моей viewDidLoad он прекрасно работает. Но скажем, я нажимаю a cell -> calls function -> displays using:[self.view.window addSubview:self.DatePicker];

Мой gestureRecognizer больше не будет работать. Я предполагаю, что это связано с отправкой его на window. Мой вопрос: как я могу заставить это работать?

UPDATE:

Причина Я добавляю к window потому, что мне нужно, чтобы дать ему fixed как собственность, и что сделал трюк для меня. Например, в CSS вы можете сделать position:fixed;

+0

Почему Вы добавляете подвидов к окну и не сам вид? Окно должно содержать только внешний вид, а все остальное должно быть вложено внутри него. –

+0

@timbodeit, пожалуйста, проверьте мое обновление. –

+0

Ваше представление UIScrollview или подобное? Если да, попробуйте следующее: сделайте обычный просмотр (# 1) и добавьте прокрутку в виде подзаголовка (# 2). Затем добавьте свой выбор даты (# 3) как подпункт к №1. Примените распознаватель жестов для просмотра # 1. –

ответ

0

ADD TAP Жест НА ВИД

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)]; 
    recognizer.delegate = self; 
    [recognizer setNumberOfTapsRequired:1]; 
    recognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view 
    [self.view.window addGestureRecognizer:recognizer]; 

handleTapBehind Метод:

- (void)handleTapBehind:(UITapGestureRecognizer *)sender 
{ 
      [self.view.window removeGestureRecognizer:sender]; 
      // Dismiss Your Keyboard HERE  
} 
+0

Зачем вам нужно удалить распознаватель жестов, что произойдет, если снова появится клавиатура – Sandeep

+0

В beginEdit текстового поля Добавить снова TAP. –

+0

@kiritmodi это именно то, что я делаю и не помогаю. –

0

Я понял, дешевый обходной путь, но если у вас есть идея получше, пожалуйста, дай мне знать.

Потому что у меня есть ячейки, которые заполнены в uitableview. Я слушаю конкретную ячейку, которая нажата. Итак, что я сделал, просто создайте контейнер gesture и добавьте его в view.window на эту конкретную ячейку, которую я слушал, и это сделало шарм.

[self.view.window addGestureRecognizer:self.gestureRecognizer];

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