2013-04-04 145 views
0

我在複雜的視圖層次結構中有一個UITextField。文本字段位於具有標籤和文本字段的UIView中,比如labelfield。UITextField沒有收到觸摸事件

我可以在那裏輸入文字。

右上角有信息按鈕。點擊Info時,將加載一個模態視圖控制器。從模態視圖控制器返回時,UITextField變爲無響應。我不能在那裏輸入任何東西。 labelfiedl被繪製並顯示在屏幕上。

有趣的是,如果我按ok按鈕,並顯示警報,然後文本字段變爲活動。另外,在視圖頂部,還有一些文字與用戶交互啓用,如果我點擊並嘗試選擇文本,然後文本框變爲活動狀態。似乎我必須在超級視圖上進行其他活動/觸摸,然後文本字段變爲活動狀態。

爲什麼不在第一種情況下它會收到任何觸摸事件?我試圖在viewDidApper方法中使用textField.enabled,becomeFirstResponder,setNeedsDisplay,沒有任何工作。

enter image description here

回答

0

這是在iPad上。所以當我按下kb鍵隱藏鍵盤並轉到信息視圖時,我跟着它,當返回時,文本字段接收觸摸事件。

似乎,當顯示鍵盤和動畫更改視圖信息視圖時,視圖大小和調整大小有一些問題。

所以,我所做的是,當按Info時,隱藏鍵盤(視圖被調整大小),有0.3秒的延遲來隱藏鍵盤,然後我切換到信息視圖。當我復出時,textfield會接收。

霍拉!這是一個骯髒的黑客,但我暫時還找不到任何其他解決方案。

- (void) infoPressed { 
    [self.view endEditing:YES]; 
    /* This is a hack to solve the issue that after coming back from the info screen, 
    the codefiled's textfield was irresponsive. */ 
    [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(gotoInfoScreen) userInfo:nil repeats:NO]; 
} 

- (void) gotoInfoScreen { 
    NSString* filePath = [[NSBundle mainBundle ] pathForResource:FILENAME_INFOTEXT_ACTIVATE ofType:@"html"]; 
    NSString* infoText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
    UIViewController* vc = ...// [init vc with info text]; 
    vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentModalViewController:vc animated:YES]; 

} 
3

請嘗試以下...

  • 確保超圖,該文本字段添加爲子視圖大到足以包含文本字段(即確保沒有任何部分的文本字段在超視圖旁邊,檢查所有視圖)。

  • 請確保textfield.use bringSubViewToFront:方法上方沒有視圖。

  • 嘗試啓用使用交互的延遲

希望之後的任何上述修復將解決你的問題

+0

顯示文本框,並且我檢查了(以彩色繪製)其上面的所有視圖。 我操縱延遲的東西,然後它的作品。 – karim 2013-04-04 13:23:42