删除子视图时如何修复触摸禁用?
Posted
技术标签:
【中文标题】删除子视图时如何修复触摸禁用?【英文标题】:How to fix touch disabled when removing subview? 【发布时间】:2016-12-25 01:55:29 【问题描述】:我有主情节提要,它将情节提要中另一个 UIViewController
的视图作为子视图添加到它上,因为我想要一种使用计时器以模态方式呈现另一个视图的方法。
我可以添加子视图(从第二个 UIViewController
开始)但是当我点击关闭时,UIView
被删除但我无法点击任何地方。
显示第二个故事板视图:
UIViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"MemberViewController"];
[viewController addChildViewController:controller];
controller.view.frame = controller.view.bounds;
[viewController.view addSubview:controller.view];
[controller didMoveToParentViewController:viewController];
隐藏子视图
+ (void)hideContentController: (UIViewController *) content
[content willMoveToParentViewController:nil]; // 1
[content.view removeFromSuperview]; // 2
[content removeFromParentViewController]; // 3
以上两个代码块都在NSObject
我在第二个故事板视图中有一个关闭按钮,它是一个 UIViewController
类,一旦点击关闭按钮,它就会在 NSObject
文件中调用 hideContentController。
任何帮助将不胜感激。
【问题讨论】:
尝试在隐藏功能中注释第 1 行和第 3 行并尝试!只需删除UIView
通常对我有用!
不幸的是没有工作..
您尝试添加为子视图的UIViewController
是否有占据整个视图的UIGestureRecognizers
?
我没有添加任何 ui 手势识别器。
【参考方案1】:
你可以像下面这样实现它:
在 MemberViewController.h
中创建 IBOutlet
@property
的 btnClose
按钮
在SecondViewController.m
类的实现中使用MemberViewController* controller
类变量:
//Write in your SecondViewController.m
controller = [storyboard instantiateViewControllerWithIdentifier:@"MemberViewController"];
[controller.btnClose addTarget:self action:@selector(closeAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubView: controller.view];
//Close Action method
-(void)closeAction()
[controller.view removeFromSuperView];
【讨论】:
我得到这个 'NSInvalidArgumentException',原因:'-[UINavigationController btnClose]: unrecognized selector sent to instance 0x11a08f000' 尝试解决这个问题..我看看这个。 不要从 btnClose 的情节提要中连接选择器 那么放在哪里呢? 我还要将成员情节提要中的 btn close 属性插座连接到按钮吗?以上是关于删除子视图时如何修复触摸禁用?的主要内容,如果未能解决你的问题,请参考以下文章