怎么让子视图接受触摸事件? 在一个主视图上添加了一个子视图,然后在主视图和子视图中各加一个touchesBegan:withEvent ,调试时点击子视图的区域,发现只有主视图响应了触摸事件,子视图没有任何响应。子视图中的userInteractionEnabled已经设置为YES。大家有遇过这类问题吗?如何解决?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉不应该呀!我刚刚写了demo测试一下superView和subView都是UIView的子类,点击没有问题;后将subview修改为UILabel的子类,点击测试,在没有设置userInteractionEnabled的情况下是都触发superView的,但是设置userInteractionEnabled后点击触发subview的。不解了你是怎么碰到的情况,建议贴代码看看~ 我在第一个view也就是主View的viewDidLoad里添加代码:PbT3ViewController *v1 = [[PbT3ViewController alloc]initWithNibName:@"PbT3ViewController" bundle:nil];[self.view addSubview:v1.view];然后在子View(PbT3ViewController)添加以下代码:-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}调试时子视图是完全覆盖主视图的,我点击之后没有响应touchesBegan::消息!请问你们也是按这个方法来测试的吗? 问题解决了!在主视图添加子视图的时候要加行代码[self.view addSubview:v1.view];[self addChildViewController:v1];这样即可解决!你们也是这样测试的吗? 不好意思我不是用这样的情况测试的,所以没有出现你说的情况!你这样解决完全可以的,但我觉得问题出现的原因是这样:UIView是通过“响应链”来决定那个View处理点击事件的,如果subview有处理,那么就由subview处理了(如:UIButton),如果没有;再检查subview是否有viewController,如果有,让viewController处理,再没有才会发给superview处理,一直这样...我猜想你的问题是:你在[self.view addSubview:v1.view];后将v1释放了,所以当v1.view查找自己viewController时发现没有,所以将事件发给了superview处理了。你解决的方法[self addChildViewController:v1];是因为这样保持了v1让他没有释放,所以就ok了,同时注意这个方法是5.0以后才有的,5.0以前的是不行的。我感觉通用的办法是将v1作为一个成员变量,使用时一直存在,不使用时在释放。 求mac下安装phonegap2.7教程 GCC可以编译OC语言么? java服务端如何给客户端提供接口调用 iPhone开发书籍下载 objective-c ipad上使用UIScrollView不能缩放 使用UIPopoverController 弹出 UISplitViewController 的问题? 关于黑苹果 望高手指点,关于买mac pro电脑开发 ios中uiwebView问题。 求助,我不能打开iOS模拟器了 cocos2d 中,实现滚屏效果的时遮罩问题 iphone 开发入门问题
不解了你是怎么碰到的情况,建议贴代码看看~
PbT3ViewController *v1 = [[PbT3ViewController alloc]initWithNibName:@"PbT3ViewController" bundle:nil];
[self.view addSubview:v1.view];
然后在子View(PbT3ViewController)添加以下代码:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
调试时子视图是完全覆盖主视图的,我点击之后没有响应touchesBegan::消息!
请问你们也是按这个方法来测试的吗?
在主视图添加子视图的时候要加行代码
[self.view addSubview:v1.view];
[self addChildViewController:v1];
这样即可解决!你们也是这样测试的吗?
你这样解决完全可以的,但我觉得问题出现的原因是这样:UIView是通过“响应链”来决定那个View处理点击事件的,如果subview有处理,那么就由subview处理了(如:UIButton),如果没有;再检查subview是否有viewController,如果有,让viewController处理,再没有才会发给superview处理,一直这样...
我猜想你的问题是:你在[self.view addSubview:v1.view];后将v1释放了,所以当v1.view查找自己viewController时发现没有,所以将事件发给了superview处理了。你解决的方法[self addChildViewController:v1];是因为这样保持了v1让他没有释放,所以就ok了,同时注意这个方法是5.0以后才有的,5.0以前的是不行的。我感觉通用的办法是将v1作为一个成员变量,使用时一直存在,不使用时在释放。