1. 程式人生 > >頁面跳轉 和虛擬鍵盤的自動隱藏

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

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


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


相關推薦

頁面 虛擬鍵盤自動隱藏

前提:起碼要有兩個檢視控制器。 注意事項:設定跳轉的動畫效果UITextField輸入時,虛擬鍵盤的位置設定(整體佈局向上移動,虛擬鍵盤的自動隱藏)實現的功能:A:在第一個頁面跳轉到第二個頁面,然後第

(五)flask框架使用教程系列——頁面重定向

一、頁面跳轉和重定向用處       在使用者訪問一些需要登入的頁面的時候,如果使用者沒有登入,那麼可以讓他重定向到登入頁面。 二、程式碼實現 # encoding:utf-8 from flask import Fla

Java Web jsp中有關頁面轉發與重定向的區別

響應頭 通過設定響應頭實現頁面跳轉,並且在面試中也會問及是否是重定向還是轉發 最後給大家簡單介紹轉發和重定向的區別 Location Location需要與狀態碼302配合使用,完成頁面重定向 Location: http://www.banma.com 指定頁面要

頁面Ajax常用操作

 常用跳轉 <a href="${pageContext.request.contextPath }/logout.action"> <form action="${pageContext.request.contextPath }/list.actio

Android中使用Intent實現一般頁面帶引數頁面

一、Intent介紹 Intent的理解       Intent, 直譯為意圖, 也就是你想要做什麼或想要去哪?       Intent是Activity, Service和BroadcastReceiver這三個應用元

react-native最新的ES6基於頁面傳值

引導頁面:最新的react-native頁面跳轉和傳值 /** * Sample React Native App * https://github.com/facebook/react-native */ import React, { Ap

iOS開發中ViewController的頁面彈出模態

ViewController 頁面跳轉 從一個Controller跳轉到另一個Controller時,一般有以下2種:  1、利用UINavigationController,呼叫pushViewController,進行跳轉;這種採用壓棧和出棧的方式,進行Control

mui初步應用(二) 頁面引數傳遞問題

繼續申明小白(希望有天可以自信的說是大佬 - -) 網上的各種頁面跳轉和引數傳遞相關文章太多,我就說些自己遇到的吧,沒總結到沒關係,以後慢慢改。。 一、頁面跳轉: 那啥 a標籤跳轉就不用說了吧- - 我還真試了 就是引數不好傳。。 然後選擇了點選事件,主要看裡面的

vuejs 頁面到外鏈(其他外站)

1、vuejs 是單頁面應用,應用內的跳轉,可以用router-link標籤 <router-link tag='a' :to="'/'" >跳轉demo</router-lin

js頁面開啟新頁面

第一種:     <script language="javascript" type="text/javascript">            window.location.href="http://www.dollare.com.cn/login.php

Jsp頁面js控制頁面的幾種方法

Jsp 頁面跳轉的幾種方法 1. RequestDispatcher.forward() 在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔

微信小程式的頁面引數傳遞,頁面生命週期

頁面的生命週期函式如下: Page({   data:{        },   onLoad:function(options){     // 生命週期函式--監聽頁面載入     console.log("---index page onLoad---")   },

UI頁面傳值

一、頁面跳轉: 利用navigation實現跳轉和利用模態跳轉的區別: navigation實現跳轉,始終在同一視窗,由導航欄來管理不同的viewController的載入和退出,因此導航欄始終在。 模態實現跳轉,是新建一個視窗,如果需要新的視窗也具有導航

React_Native頁面Android回退鍵

首先文中內容參考一下網上的大神: 本文的頁面主要是這篇部落格的: 學習RN基本上都是以這位大神寫的作為藍圖: 還有一些RN的知識點參考了React-Native中文網: 首頁就是這樣的:基本看上去就和上面那位博主的頁面一模一樣 但我這邊使用按鈕

servlet的後臺頁面ajax的頁面

1.servlet的頁面跳轉 Servlet:當然,在servlet中,一般跳轉都發生在doGet, doPost等方法裡面。1) redirect 方式response.sendRedirect("/a.jsp");頁面的路徑是相對路徑。sendRedirect可以將頁面

flutter -------- 頁面傳值

內容 bsp lis 分享 flutter tail navig star xtend 在安卓原生開發中,頁面跳轉可以用Intent類來具體實現: Intent intent =new Intent(MainActivity.this,second.class);

用weexplus從0到1寫一個app(2)-頁面文章列表及文章詳情的編寫

則無 eight o-k 目前 use 跟著 ext methods 分別是 說明 結束連續幾天的加班,最近的項目終於告一段落,今天抽點時間開始繼續寫我這篇拖了很久的《用weexplus從0到1寫一個app》系列文章。寫這篇文章的時候,weexplus的作者已經把weexp

js實現頁面,獲取當前頁面地址

and cat 直接 cati expand 當前 頁面跳轉 location 設置 JS有時候需要實現頁面跳轉,那麽可以直接在某個事件觸發中設置 location.href="/user/center/" 這樣即可實現頁面跳轉。 獲取當前頁面地址可以直接這樣

Android歡迎頁面自動觸控進入首頁

*注:純屬學習筆記 因為是剛入門的菜鳥,在理解歡迎介面跳轉到首頁的時候,比如三秒自動跳轉,或者點選直接進入,會出現一定的bug,比如溢位等,自己整理了下.***適合新手 第一:首先需要判斷的是WelcomeActivity接受到了觸控時間還是自動跳轉,定義一個跳轉到Ma

jsp中頁面定時自動重新整理按F5重新整理

定時自動重新整理跳轉(5秒後跳到index.html頁面): <meta http-equiv="refresh" content="5,url=index.html"> 鍵盤按鍵控制跳轉: <script> document.onkeydow