IOS鍵盤輸入屏幕上移

来源:http://www.cnblogs.com/BK-12345/archive/2016/10/15/5964816.html
-Advertisement-
Play Games

在IOS開法中經常會遇到鍵盤遮擋屏幕的事情(比如輸入賬號密碼驗證碼等等),就使得原本都不大的屏幕直接占了一半甚至更多的位置,這倒無所謂,關鍵是擋住了下麵的按鈕。這樣的話按鈕的事件也就觸發不了,最好的解決辦法就是當輸入這些信息的時候讓整個屏幕上移一個鍵盤的位置,或者上移到指定的位置。 首先一般輸入的話 ...


在IOS開法中經常會遇到鍵盤遮擋屏幕的事情(比如輸入賬號密碼驗證碼等等),就使得原本都不大的屏幕直接占了一半甚至更多的位置,這倒無所謂,關鍵是擋住了下麵的按鈕。這樣的話按鈕的事件也就觸發不了,最好的解決辦法就是當輸入這些信息的時候讓整個屏幕上移一個鍵盤的位置,或者上移到指定的位置。

首先一般輸入的話都用的是UITextField,所以要監聽用戶什麼時候開始輸入和什麼時候結束輸入,直接設置代理代理就行了,要遵受

UITextFieldDelegate協議。

//遵循協議

@interface ViewController ()<UITextFieldDelegate>

//設置屬性

@property(nonatomic,strong)UITextField* UITF;

//設置代理

 UITF.delegate=self;

//代理方法

//鍵盤彈出時屏幕上移

-( void )textFieldDidBeginEditing:(UITextField *)textField

{

  //假如多個輸入,比如註冊和登錄,就可以根據不同的輸入框來上移不同的位置,從而更加人性化

    //鍵盤高度216

    //滑動效果(動畫)

    NSTimeInterval animationDuration = 0.30f;

    [UIView beginAnimations:@ "ResizeForKeyboard"  context:nil];

    [UIView setAnimationDuration:animationDuration];

    //將視圖的Y坐標向上移動,以使下麵騰出地方用於軟鍵盤的顯示

    self.view.frame = CGRectMake(0.0f, -100.0f/*屏幕上移的高度,可以自己定*/, self.view.frame.size.width, self.view.frame.size.height); 

    [UIView commitAnimations];

}

//取消第一響應,也就是輸入完畢,屏幕恢複原狀

-( void )textFieldDidEndEditing:(UITextField *)textField

{

    //滑動效果

    NSTimeInterval animationDuration = 0.30f;

    [UIView beginAnimations:@ "ResizeForKeyboard"  context:nil];

    [UIView setAnimationDuration:animationDuration];

    //恢復屏幕

    self.view.frame = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);

    [UIView commitAnimations];

}

接下來說一下取消第一響應。

一般都是在當前View上添加一個點擊手勢即可,這樣的話就可以取消鍵盤的第一響應,但是這樣的話有一個弊端,比如:因為註冊登錄頁面當屏幕上移時,

就會顯示註冊或登錄的頁面,如果添加點擊手勢的話那麼就會覆蓋掉按鈕的點擊事件,也就是明明看到了按鈕,但是點擊卻沒反應,那麼怎麼辦呢?

如何實現註冊登錄的按鈕事件都在,點擊其他的地方還能取消鍵盤的第一響應。

其實很簡單,我的解決辦法是這樣的

創建一個按鈕,和屏幕一樣大,所有的控制項全部都放到這個按鈕上,而這個按鈕的點擊事件就是取消輸入框的第一響應。這樣就可以了。

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於課程需要和自身需求以及廣大的LLer的需求,這個學期我將做一個造福全世界LLer的安卓app,他的名字是——還沒想好(喂),總之是個LL SIF的練習器。什麼?你問我LL SIF是什麼?看來你不是真正的LLer看來我需要說明一下。 LL SIF全稱LoveLive School Idol Fes ...
  • UIColor有一個方法叫做+ (UIColor *)colorWithPatternImage:(UIImage *)image;。返回的是一個UIColor,但沒有明確的RGB值,所以叫做pattern color。 [color getRed:&a green:&g blue:&b alpha... ...
  • 首先是要打開Wex5 (這是廢話,下麵進入正題..) 1.第一步,找到界面中的 ”視窗” 點擊打開,你會看到一個 “ 首選項 ”按按照流程也要打開 (囧),,,,,,,,看圖為重 2.當你打開了 “首選項” 會展示出一列樹節,我們要找到樹節中的 “Studio配置” 屬性,然後展開 3.展開 “St ...
  • 在Xcode中使用Git進行源碼版本控制 在應用程式開發過程中,很重要的一部分工作就是如何進行源碼的版本控制。當代碼出現問題時,我們就需要將代碼恢復到原先正常的版本。如果是多個人共同開發一個項目,那麼代碼的控制就會非常複雜。幸運的是,開發者不需要自己控制這些,因為有專門的軟體來負責,叫做版本控制系統 ...
  • service常見的有2種方式,本地service以及remote service。 這2種的生命周期,同activity的通信方式等,都不相同。 關於這2種service如何使用,這裡不做介紹,只是介紹一些被遺漏的地方 1.遠程Service(AIDL方式) package com.joyfulm ...
  • 1.隱藏顯示dock的快捷鍵cmd - opt - d 2.如何快速調出命令終端或者調出其他程式通過安裝 Alfred,Alfred算是神兵利器——Alfred 3.Dock在隱藏後,滑鼠移過去,Dock顯示出來時,稍微有延遲的感覺可以通過下麵的終端命令進行調整: defaults write co ...
  • 一個簡單的關於頁面,有一個圖片,版本號,App名稱等,著重演示各個系列的文章完整集成示例. ...
  • Linux文件和目錄許可權解讀 如何設置Linxu文件和目錄的許可權 字元表示法 1)ls -l:查看所在目錄所有文件的許可權 2)chmod u=r file:把file文件的當前(用戶user)的許可權賦值為可寫模式 3)chmod g=wrx file:把file文件的當前(組gruop)的許可權賦值為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...