頁面跳轉 和虛擬鍵盤的自動隱藏

前提:起碼要有兩個視圖控制器。


注意事項:
設置跳轉的動畫效果
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];
}


介紹完畢



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