iOS推送到另一个视图控制器被卡住
我有一个基本视图控制器,我的所有视图控制器都继承它iOS推送到另一个视图控制器被卡住,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我有一个基本视图控制器,我的所有视图控制器都继承它 @interface BaseViewController () <UIGestureRecognizerDelegate> @end @implementation BaseViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.
@interface BaseViewController () <UIGestureRecognizerDelegate>
@end
@implementation BaseViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.tabBarController.tabBar.translucent = NO;
self.navigationController.navigationBar.translucent = NO;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
self.view.backgroundColor = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:1];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.backButton];
self.navigationItem.backBarButtonItem.title = @"";
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
- (void) popToPreViewController {
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - getter and setter
- (UIButton *) backButton {
if (!_backButton) {
_backButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 20.0, 20.0)];
[_backButton addTarget:self action:@selector(popToPreViewController) forControlEvents:UIControlEventTouchUpInside];
[_backButton setImage:[UIImage imageNamed:@"main_back"] forState:UIControlStateNormal];
_backButton.hidden = YES;
}
return _backButton;
}
@end
@接口BaseViewController()
@结束
@BaseViewController的实现
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后执行任何其他设置。
self.tabBarController.tabBar.translucent=否;
self.navigationController.navigationBar.translucent=否;
self.navigationController.interactiveepogesturerecognizer.delegate=self;
self.view.backgroundColor=[UIColor COLOR WITHRED:0.95绿色:0.95蓝色:0.95阿尔法:1];
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithCustomView:self.backButton];
self.navigationItem.backBarButtonItem.title=@”;
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
-(UIStatusBarStyle)首选状态BarStyle{
返回UIStatusBarStyleDefault;
}
-(无效)popToPreViewController{
[self.navigationController PopViewControllerInitiated:是];
}
#pragma标记-getter和setter
-(UIButton*)后退按钮{
如果(!\u后退按钮){
_backButton=[[UIButton alloc]initWithFrame:CGRectMake(0.0,0.0,20.0,20.0)];
[_BackButtonAddTarget:self action:@selector(popToPreViewController)for ControlEvents:UIControlEventTouchUpInside];
[\u backButton setImage:[UIImage ImageName:@“main\u back”]用于状态:UIControlStateNormal];
_backButton.hidden=是;
}
返回返回按钮;
}
@结束
有时按下另一个视图控制器会卡住,但应用程序不会崩溃。按home按钮并再次打开应用程序,它会显示另一个视图控制器。这个baseviewcontroller有什么问题吗?我已经被这个问题困扰了很长时间,现在找到解决方案。 出现此问题的原因是根控制器执行手势弹出操作,出现上述问题。解决方法是在根控制器上禁用手势弹出,在非根控制器上打开手势弹出
/// The controller is fully displayed, opening the gesture pop
Func navigationController (_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
If viewControllers.first == viewController {
InteractivePopGestureRecognizer? .isEnabled = false
} Else {
InteractivePopGestureRecognizer? .isEnabled = true
}
NavigationBar.sendSubview (toBack: navigationBar.overlay)
}
提供更多的代码,我可以看到如何从基本视图控制器问题中显示子视图控制器是为后退按钮设置的非常小的frame rect“\u backButton=[[UIButton alloc]initWithFrame:CGRectMake(0.0,0.0,20.0,20.0)];”。它应至少为45x45,以接收正确的用户点击evert。使用按钮插图放置按钮图像并保留帧45x45或更大的图片。它也解决了您的问题吗?@aman.sood不,我对此感到困惑。@lionserdar不。。。