2013-07-01 97 views
4

這裏是我的情況:的UITextField不響應用戶交互

我有我的故事情節進行UIViewController我的映射功能。我加入了谷歌地圖視圖(Google地圖的iOS 1.3.1),如:

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 
    longitude:151.20 zoom:6]; 
mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 49, 320, 450) camera:camera]; 
mapView_.myLocationEnabled = YES; 
self.view = mapView_; 

我創建了一個自定義視圖:MapTopBar.xib。簡單地說,它是一個UIView,其中UIImageView(背景)和UITextField &按鈕。它有一個後備類文件,所有的UITextFields屬性都已設置(代理,出口等)。

我加入我的自定義視圖我的地圖VC喜歡:

UIView *topBar = [[MapTopBar alloc] initWithFrame:CGRectMake(0, 0, 320, 49)]; 
[self.view addSubview:topBar]; 

我的自定義視圖被添加到主視圖,但UITextField不接收任何觸摸事件。沒有顯示鍵盤,沒有光標在現場,什麼都沒有。就好像有東西在遮蓋它,不允許任何用戶交互。它旁邊的按鈕可以按下並正常工作。

我試着做這許多不同的方式(以編程方式創建整個頂欄視圖,添加文本字段編程)和無論什麼時候,文本字段不會得到用戶交互。

我啓用了用戶的交互,確信沒有任何觀點是,文本框的頂部,全部爲空。我覺得我錯過了簡單的事情。爲什麼我不能與我的文本框交互?

另外:如果是相關的,上面的代碼是在它自己的子從viewDidLoad被稱爲超級調用之前。

回答

1

這很可能是該的UITextField是它的父視圖的邊界之外,並沒有被修剪。 (或父視圖是其母公司的邊界......等之外)

在viewDidAppear,請使用您的的UITextField結束調試器或NSLog的視圖層次結構。檢查以確保每個視圖的框架完全位於其父視圖內。

像這樣的東西應該做的伎倆,以確定任何超出框架的觀點:

UIView* v = _myTextField; 
while (v.superview != nil) 
{ 
    NSLog(@"%@ - %@", NSStringFromClass([v class]), CGRectContainsRect(v.superview.bounds, v.frame) ? @"GOOD!" : @"BAD!"); 
    v = v.superview; 
} 
0

我有同樣的問題!你有沒有發現任何工作?似乎一切都適合UITextField的框架。爲了調試目的,我在UITextField上面放了一個按鈕,這個按鈕能夠觸及。也許這筆交易是Google地圖視圖處理觸摸或UI繪圖的方式?

0

確保您將文本字段插入到內容視圖中。

0

我有這個同樣的問題,找到了解決此https://stackoverflow.com/questions/20015266

看來GMSMapView中有一個BlockingGestureRecognizer防止與文本字段的相互作用。如果您禁用此功能,請記住,父視圖將從手勢接收事件

相關問題