2011-05-25 83 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

相关问题