相关疑难解决方法(0)

如果模态ViewController演示文稿样式为UIModalPresentationFormSheet,则iPad键盘不会被忽略

注意:

从iOS 4.3开始,请参阅已接受的答案(不是最受欢迎的答案).

这个问题是关于在iPad键盘中发现的行为,如果在带有导航控制器的模态对话框中显示,它将拒绝被解雇.

基本上,如果我使用以下行显示导航控制器,如下所示:

navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
Run Code Online (Sandbox Code Playgroud)

键盘拒绝被解雇.如果我注释掉这一行,键盘就会消失.

...

我有两个textFields,用户名和密码; username有一个Next按钮,密码有一个Done按钮.如果我在模态导航控制器中显示它,键盘将不会消失.

作品

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
[self.view addSubview:b.view];
Run Code Online (Sandbox Code Playgroud)

什么都不行

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController = 
[[UINavigationController alloc]
 initWithRootViewController:b];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];
Run Code Online (Sandbox Code Playgroud)

如果我删除导航控制器部件并将"b"作为模态视图控制器单独显示,则可以正常工作.导航控制器是问题吗?

作品

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:b animated:YES];
[b release];
Run Code Online (Sandbox Code Playgroud)

作品

broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController = 
    [[UINavigationController …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitextfield first-responder ios

214
推荐指数
4
解决办法
5万
查看次数

ModalPresentationStyle的Popover不在iOS 7 iPad中居中

我有一个iOS 7的问题似乎是一个错误或我只是不做正确的事情.我有modalViewController,它在iPad上使用ModalPresentationStyle显示为popover.它不是标准尺寸,自定义尺寸.这是代码:

myViewController *myVC = [[myViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myVC];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[nav setModalTransitionStyle: UIModalTransitionStyleFlipHorizontal];
[self presentViewController:nav animated:YES completion:nil];
nav.view.superview.bounds = CGRectMake(0, 0, 320, 465);
Run Code Online (Sandbox Code Playgroud)

它在iOS 6中都运行良好,但在iOS 7中并没有集中.但是,如果我将ModalTransitionStyle设置为UIModalTransitionStyleCrossDissolve,它可以正常工作.但只有在这种模式下.也许有人偶然发现了这个,知道如何修复它?我不是解散效果的忠实粉丝.谢谢.

objective-c ipad modalviewcontroller uimodalpresentationstyle ios7

19
推荐指数
3
解决办法
2万
查看次数

在iOS 8中显示隐藏键盘时编辑UIView的边界

我提出了一个小的"登录" UIViewController作为UIModalPresentationFormSheet自定义边界.在该viewWillLayoutSubviews方法中,我将视图的大小更改为(300,250).这在iOS 5/6/7中有效,但在8中不再有效.

当显示视图并点击a时UITextField,应用程序变得无响应(未冻结,只是没有响应触摸).几乎就像键盘出现但没有出现.委托方法被正确调用.如果我self.view.superview.bounds = CGRectMake(0, 0, 300, 250);viewWillLayoutSubviews方法中删除键盘,但视图现在是全尺寸UIModalPresentationFormSheet样式.

这只发生在iOS 8中,所以我只能假设键盘呈现的方式以及我屏蔽/调整视图大小的方式存在问题,但我对解决方案感到茫然.

呈现ViewController -

UserLoginViewController *loginVC = [[UserLoginViewController alloc] initWithNibName:@"UserLoginViewController" bundle:nil];
loginVC.modalPresentationStyle = UIModalPresentationFormSheet;
loginVC.delegate = self;
[self presentViewController:loginVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

编辑视图边界 -

- (void)viewWillLayoutSubviews {

    [super viewWillLayoutSubviews];
    self.view.superview.layer.cornerRadius  = 10.0;
    self.view.superview.layer.masksToBounds = YES;
    self.view.superview.bounds = CGRectMake(0, 0, 300, 250);
}
Run Code Online (Sandbox Code Playgroud)

keyboard objective-c uiview ipad ios

3
推荐指数
1
解决办法
3352
查看次数