1. 程式人生 > >iOS8以後, 使用UIAlertViw時pop/push頁面後,鍵盤閃一下的問題

iOS8以後, 使用UIAlertViw時pop/push頁面後,鍵盤閃一下的問題

問題分析:iOS8以後,當前介面有UITextField、UITextView等輸入框時, 需要點選確定pop到上一個頁面或者彈出UIAlertView等彈框時, 會出現pop介面後鍵盤出現又隱藏的問題, 這是alertView的動畫和鍵盤動畫起衝突了導致的。
(程式碼源於網路,侵權刪!)

第一種: 等鍵盤完全收起之後再pop、push或者彈出UIAlertView。直接dispatch_after個至少0.25秒再執行pop或者push。至於為什麼是0.25秒,因為系統鍵盤收起或顯示的duration就是0.25秒。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if
(buttonIndex==0) { __weak typeof(self) weakSelf = self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [weakSelf backForward]; }); } } - (void)backForward { [self.navigationController popViewControllerAnimated:YES]; }

第二種: 在iOS8的SDK中,蘋果提倡使用UIAlertController取代UIAlertView。

官方解釋如下:

NS_CLASS_DEPRECATED_IOS(2_0, 9_0, “UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead”) __TVOS_PROHIBITED

NS_CLASS_DEPRECATED_IOS(2_0, 8_3, “UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead”) __TVOS_PROHIBITED

參考程式碼如下:

#define SYSTEM_VERSION [[UIDevice currentDevice].systemVersion floatValue]
if (SYSTEM_VERSION >= 8.0) {
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil  message:@"提示文字" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    [self.navigationController popToViewController:viewController animated:YES];
    }];
    [alertController addAction:okAction];
    [self presentViewController:alertController animated:YES completion:nil];
    } else {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"提示文字" delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil];
    [alertView show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    [self.navigationController popToViewController:viewController animated:YES];
}

共同學習,留念備忘

相關推薦

iOS8以後, 使用UIAlertViwpop/push頁面鍵盤一下的問題

問題分析:iOS8以後,當前介面有UITextField、UITextView等輸入框時, 需要點選確定pop到上一個頁面或者彈出UIAlertView等彈框時, 會出現pop介面後鍵盤出現又隱藏

push頁面隱藏tabbarpop顯示tabbar

1:push頁面後隱藏tabba 在pushViewController之前呼叫 [self setHidesBottomBarWhenPushed:YES]; [self setHidesBottomBarWhenPushed:YES];

C#屏蔽Alt+F4解決Alt+F4關閉窗體對話框NO線程不退出問題

按鍵 是否 tar span hand handle 系統 code view //1.將窗體的屬性KeyPrieview設置為true //keypreview屬性為true的時候,就可以響應鍵盤事件v //2.在窗體KeyDown事件中加如下代碼 private v

修改js頁面重新整理頁面未生效

前言:         今年四月份由於業務需要,實現了一個簡單的前端頁面。近期針對服務變動,需要對管理平臺頁面進行相應的改動。此次修改在測試環境已經測試通過,但是在正式環境上線後發現頁面效果並沒有生效。再三確認上線版本,確定是正確的版本。因此go

向github專案push程式碼Jenkins實現其自動構建

配置Jenkins(新增Github伺服器) 1、進入【系統管理】 --> 【系統設定】 ,找到【Github】 2、新增Github伺服器 這裡需要github提供一個金鑰文字,我們去github建立一個   建立成功後複製下面這一串,貼到Jenkins中

HTML檔案裡把所有的css、js檔案引入其他的HTML檔案引入該頁面可以使用該頁面引入的css和js

怎樣將一個HTML檔案裡把所有的css、js檔案引入後,然後其他的HTML檔案就不需要在進行引入了 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

UIWebView播放一段內嵌在HTML中的視訊退出頁面聲音繼續播放

在使用UIWebView載入一段內嵌有視訊、音訊的html,正在播放時,退出當前頁面,聲音仍然在播放!本以為退出當前頁,去掉webView,聲音就沒了,然而事實並不是這樣,後來就用了webView reload這個方法,在退出頁面時,讓webView重新載入,

網頁提交當再次返回到提交頁面頁面停留在原來的位置

<script   language="javascript">     <!--     function   window.onload()     {     if(arr=document.cookie.match(/scrollTop=([^;]+

vue單頁應用中使用setInterval()定時向伺服器獲取資料後來跳轉頁面發現還在不停的獲取資料。

使用VUE開發單頁專案時遇到這樣的問題,mounted中使用setInterval()定時向伺服器獲取資料,後來跳轉頁面後,發現還在不停的獲取資料。我以為是因為我路由用的push導致的,改成replace也是這樣,後來就在部落格園找到答案了,如下: http://www.cnblogs.com/zzbp/p/

使用ajax重新整理頁面如何後退

1、使用pushState(data, title, url)將url加入到堆疊中,data為要給state的資料,title頁面標題可為空,url是要加入的 2、replaceState(data, title, url)和上一個引數相同,不同點在於他是改變當前的url,

載入完頁面用js對介面控制元件進行隱藏

方法1:js寫在在head裡的$(function(){});函式裡,會在頁面完全顯示後,再執行此函式,對控制元件進行隱藏,會先看到控制元件,然後再對控制元件進行隱藏。不推薦此方法。方法2:js寫在</body><script type="text/java

ionic 1頁面跳轉登入頁面返回按鈕處理

說到ionic返回按鈕,可能第一想到的就是ionic在app.config中配置按鈕的情況,小夥紫還不錯嘛。 這篇blog想討論的恰好不是這個,不過也和他有關啦,就因為這個按鈕,在正常頁面跳轉時候,肯定是需要的。 凡事總有例外: 很多情況下,比

糊糊的前端學習筆記——a標籤點選跳轉頁面為被點選的a標籤新增樣式【Day1】

本人前端小白一枚,初步接觸前端知識一個月。從今天開始將在部落格上分享一下我每日工作中遇到的一些問題和相應的解決,以幫助自己更好的學習和成長。 今天在製作網頁頂部公共導航時,遇到這樣一個問題,我需要在a標籤點選跳轉頁面後,為被點選的a標籤新增樣式。 增添樣式如下:.selec

oracle數據庫誤刪數據及時回恢復數據

誤刪數據 不重復 timestamp 恢復數據 重復 恢復 重新 times oracl 刪除數據後最好不要進行其他無關操作 ①確定刪除數據的時間 ②此語句找出刪除的數據:select * from 表名 as of timestamp to_timestamp(‘刪除時間

oracle update並commit誤操作利用回方法 flashback可以還原上個時間點的資料

今天在生產環境更新一個選單的URL時,用update更新資料,但是忘記加上where限定條件,將所有選單的URL都更新為同一個。一時間感覺我惹大事了,慌忙找了個以前的備份表將整個表替換掉。可是備份表與真是表之間存在一些差異,結果就只能一個一個查詢並修改了。 事後才淡定下來,

作業系統的shell是個什麼東西?(也談為什麼雙擊.exe黑屏一下就消失)

         我們經常聽到別人說shell, 那麼究竟什麼是shell呢?先複習兩個簡單的單詞吧: core  :  核心 shell : 外殼          在計算機中,shell是一個軟體(此處的shell跟shell sort沒有關係),沒有重量,沒有味道,

ios導航控制器UINavigationController,控制器a跳轉(push)到b,b跳轉(push)到c但c後退(pop)進入a

data- object tracking not another target eas com targe 參考:StackOverflow ios導航控制器UINavigationController,控制器a跳轉(push)到b後,b跳轉(push)到c。但c後退

使用SpringMVC的crud操作進行資料修改但是修改成功頁面無法顯示lastName屬性值(被修改的那條記錄)

我這個錯誤的原因在於,把map的鍵寫錯了,它必須和類名第一個字母小寫相同 @ModelAttribute public void getEmployee(@RequestParam(value="id",required=false) Integer id, Map&l

使用layuiajax執行重新渲染頁面的方法

$.ajax({ url : url, type : 'get', dataType:'json', success : function(data) {

linux上部署服務訪問站點頁面提示Access denied

解決: 直接使用一下兩條命令: PP3=`cat -n /usr/local/php/etc/php.ini  | grep cgi.fix_pathinfo=   | awk '{print $1}'` sed -i ''"$PP3"'c cgi.fix_pathinfo=1'