效果展示:
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]; }