页面跳转 和虚拟键盘的自动隐藏

前提:起码要有两个视图控制器。


注意事项:
设置跳转的动画效果
UITextField输入时,虚拟键盘的位置设置(整体布局向上移动,虚拟键盘的自动隐藏)


实现的功能:
A:在第一个页面跳转到第二个页面,然后第二个页面点击按钮,进行返回
B:在第一个页面有一个text控件,点击一个按钮,传递到第二个页面,然后显示到第二个
页面的label上面:



效果展示:



步骤:


1.新建两个类,然后勾选xib,在AppDelegate的实现文件把其中的一个视图加载进去

//新建一个视图控制器
    MainViewController *myView = [[MainViewController alloc]init];
    //让新建的视图控制器加入根类的视图中
    self.window.rootViewController = myView;


2.构建布局,定义方法:
头文件代码如下:

#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);
    }];
    

}


解决问题2:

如果我们输入完了,需要点击按钮进行跳转,发现现在的按钮已经被虚拟键盘掩盖了
怎么样才能鼠标点击空白处,虚拟键盘就会自动的隐藏呢:这时候就要重写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];
}


介绍完毕



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章