注意事项:
设置跳转的动画效果
UITextField输入时,虚拟键盘的位置设置(整体布局向上移动,虚拟键盘的自动隐藏)
实现的功能:
A:在第一个页面跳转到第二个页面,然后第二个页面点击按钮,进行返回
B:在第一个页面有一个text控件,点击一个按钮,传递到第二个页面,然后显示到第二个
页面的label上面:
效果展示:
步骤:
1.新建两个类,然后勾选xib,在AppDelegate的实现文件把其中的一个视图加载进去
//新建一个视图控制器
MainViewController *myView = [[MainViewController alloc]init];
//让新建的视图控制器加入根类的视图中
self.window.rootViewController = myView;
头文件代码如下:
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface MainViewController : UIViewController<UITextFieldDelegate>
{
//把2页面声明为成员变量,便于本类的多个方法的调用。
DetailViewController *dail;
}
//点击是页面跳转
- (IBAction)enter:(id)sender;
//点击时把输入的文字传递过去,在2页面显示
- (IBAction)Image:(id)sender;
//文本控件
@property (strong, nonatomic) IBOutlet UITextField *Sent;
@end
3.在实现文件中,方法的实现代码如下:
- (IBAction)enter:(id)sender {
//0,默认。 1. 翻转 2.淡化 3.翻页
dail.modalTransitionStyle = 2;
//跳转操作
[self presentViewController:dail animated:YES completion:nil];
}
- (IBAction)Image:(id)sender {
//跳转并发送文本
[self presentViewController:dail animated:YES completion:nil];
dail.Get.text = self.Sent.text;
}
4.2页面的头文件代码如下:
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController
//点击后,返回
- (IBAction)Return:(id)sender;
//用来接受传递过来的文本:
@property (strong, nonatomic) IBOutlet UILabel *Get;
@end
2页面的实现文件按代码如下:(部分方法实现代码)
- (IBAction)Return:(id)sender {
// 点击后进行返回操作
[self dismissViewControllerAnimated:YES completion:nil];
}
解决问题1:
如果文本框在一个页面的中间,我们输入的时候,虚拟键盘就把文本框给掩盖住了。我们可以
把界面集体上移,
前提:首先我们要遵守UITextFieldDelegate的协议,调用里面的成员方法:
代码实现:
- (void)textFieldDidBeginEditing:(UITextField *)textField{
//加一个动画的效果:隔一秒钟让view上移,因为键盘的出现是上移的,如果你的view之间蹦到
//指定的座标,中间会有一个空缺;
[UIView animateWithDuration:1 animations:^{
//让页面的Y座标变为-260.就做了向上移动操作。
self.view.frame = CGRectMake(0, -260, self.view.frame.size.width, self.view.frame.size.height);
}];
}
如果我们输入完了,需要点击按钮进行跳转,发现现在的按钮已经被虚拟键盘掩盖了
怎么样才能鼠标点击空白处,虚拟键盘就会自动的隐藏呢:这时候就要重写uiView的方法:
以让我们输入结束的时候,让输入框取消第一响应者。从而让键盘隐藏:
前提:
设置TextField的代理对象为当前类对象:
代码如下:
- (void)viewDidLoad
{
[super viewDidLoad];
dail = [[DetailViewController alloc]init];
//设置UITextField的代理为当前类对象
self.Sent.delegate = self;
// Do any additional setup after loading the view from its nib.
}
虚拟键盘自动隐藏的代码如下:
代码如下:
//触摸时间:重写系统的方法:点击空白处,虚拟键盘消失
//让整个文本输入框取消第一响应者,从而让所有控件的键盘隐藏
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//NSLog(@"touch");
[self.Sent resignFirstResponder];
}