2015-01-17 79 views
0

我有填充幾個字段到self.view.window視圖的功能。現在,如果我運行:關閉鍵盤 - 的OBJç

/* 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它的偉大工程

。但讓我說我點擊一個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雙擊手勢上查看

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添加再次點擊時會發生什麼。 –

+0

@kiritmodi這正是我正在做的,並沒有幫助。 –

0

我想出了一個廉價的解決方法,但如果你有更好的想法,請讓我知道。

因爲我有被填充在uitableview我聽了點擊一個特定的細胞的細胞。因此,我所做的只是創建一個gesture容器,並添加到view.window上,我聽了,並且做了魅力特定的細胞。

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