2011-05-25 81 views
1

我有一個ViewController響應一些touchEvents(touchesBegan,touchesMoved等)。TouchesBegan在沒有被調用的子視圖控制器上

我發現,當我告訴使用presentModalViewController此控制器:它工作得很好,但我嘗試添加它查看另一ParentViewController的像這樣子視圖:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //Add SubController 
    controller = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil]; 
    controller.view.frame = CGRectMake(0, 30, 300, 130); 
    [view addSubview:controller.view]; 
    [controller release]; 
} 

當我做這樣,它會添加父視圖,但不再響應觸摸事件。有沒有辦法來解決這個問題?

另外,有沒有更好的方法來解決這個問題?我知道我可能可以使用子視圖的View子類,但它應該使用一個Nib,我不知道如何處理,而不使用ViewController。

回答

2

你是對的,你應該使用UIView子類。

從筆尖加載它的最簡單方法是將子視圖包含在筆尖中。

  • 只需將一個UIView放入連接到原始視圖控制器的視圖中。

  • 然後隨着選擇的視圖去身份檢查員。它就像一張小小的身份證。

  • 第一個字段被稱爲自定義類別

  • 在此輸入您的UIView的名稱的子類

如果您需要對此的引用,只需在您的原始視圖控制器中創建一個IBOutlet並將其掛接即可。這樣你可以設置hidden = YES,直到你需要它。

在你的UIView子類,你可能希望覆蓋

- (void)awakeFromNib 這當筆尖第一解包將被調用。

用於設置任何手勢識別器等。

1

要加載筆尖直接進入一個觀點:

// Get the views created inside this xib 
NSArray *views = [NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:nil]; 

// There's probably only one in there, lets get it 
UIView *myView = [views objectAtIndex:0]; 

// Do stuff . . . 
[[self view] addSubview:myView]; 
0

你可以嘗試調用becomeFirstResponder在你的子視圖,看看是否收到touchesBegan ...這可能是這樣,但它也將有可能使如果你需要它,超級瀏覽器不會收到touchesBegan ...

+0

請編輯,不代表不支持投票。除非您編輯,否則我無法刪除它。 – mackross 2011-05-25 17:04:03

+0

@mackross:已編輯... – sergio 2011-05-25 20:46:54

相關問題