新增多個UIWindow時,使用keyWindow要注意一點
有個任務是在開啟資訊展示時,要求不被任何東西遮擋。這裡設計方案是新增一個新的HXUIWindow繼承與UIWindow。測試時打開了HXUIWindow顯示在螢幕上,執行開啟 彈框 按鈕(uiactionsheet或uialerview),當彈框消失後,再執行向主頁最外層新增一個view,這個時候應該會想到用[[UIApplication sharedApplication].keyWindow addSubview:view],這個時候問題出現了,程式將view新增到了HXUIWindow上,而HXUIwindow大小隻有100*100,所以超出的內容沒有點選事件。
這是為什麼呢?因為這個時候[UIApplication sharedApplication].keyWindow 是HXUIWindow而不是程式最開始預設的那個[[[UIApplication sharedApplication] delegate] window]。這又是為什麼呢,因為這裡執行了開啟 彈框 按鈕(uiactionsheet或uialerview),當開啟(uiactionsheet或uialerview)時,程式為了讓彈框出現在最外層,會新建一個臨時的uiwindow,並且層級最高,還將keywindow賦值與它。當彈框消失後keywindow將轉向另一個uiwindow,這個時候轉向了HXUIWindow,因為HXUIWindow層級最高,在windows裡層級拍最後面。剛開始的時候只有[[[UIApplication sharedApplication] delegate] window],所以其為keywindow,當然也是有因為設定為keywindow的原因,只有新增HXUIWindow時沒有改變keywindow的值,當彈窗彈出後keywindow會將指向彈框彈出後新建的uiwindow,彈窗消失時keywindow又將重新指向,這個時候其會將指向層級最高的uiwindow,所以指向了HXUIWindow了。
總結:
1.經過測試keyWindow永遠是覆蓋在檢視的最外層,在正常情況下獲取到的keyWindow是UIWindow;
2.在有UIAlertView或UIActionSheet的彈出層情況下,在去獲取keyWindow這個時keyWindow就會變成UIAlertControllerShimPresenterWindow這個類,是彈出層上層的一個window;
3.在UIAlertView或UIActionSheet彈出後再給keyWindow新增的view,會在UIAlertView彈出層消失後,keyWindow上邊的檢視也會隨之消失;
4.會在UIAlertView彈出層消失後,keyWindow指向檢視最外層的HXUIWindow了,之後新增到[[UIApplication sharedApplication].keyWindow 上的uiview都將新增到HXUIWindow上了;
相關推薦
新增多個UIWindow時,使用keyWindow要注意一點
最近的專案裡有個關於建立多個uiwindow時使用keywindow出現的bug。有個任務是在開啟資訊展示時,要求不被任何東西遮擋。這裡設計方案是新增一個新的HXUIWindow繼承與UIWindow。測試時打開了HXUIWindow顯示在螢幕上,執行開啟 彈框 按鈕(ui
百度地圖 迴圈載入marker並新增多個資訊視窗,解決只顯示最後一個視窗資訊的問題
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShowNurseryInfo.aspx.cs" Inherits="Bim5D_Web.Nursery.ShowNurseryInfo" %> <!DOCTY
oracle 一個表新增多個欄位,根據條件重新整理欄位值
2. Oracleupdate TA a set(name, remark)=(select b.name, b.remark from TB b where b.id=a.id) where exists(select 1 from TB b where b.id=a.
無線網路覆蓋-java中,用Math.sqrt()時,必須要注意小數問題
時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們的樂樂同學對於網路可算得上是情有獨鍾,他有一個計劃,那就是用無線網覆蓋鄭州大學。 現在學校給了他一個機會,因此他要購買很多的無線路由。現在他正在部署某條大道的網路,而學校只允許把他的無線路由器放在路的正中間。我們預設這條大道
ios開發時,在Xcode中新增多個targets進行版本控制,管理多個相同內容的專案
在ios開發時,我們經常會遇到對同一個app開發多個版本(Pro、Lite、Free)的情況,這裡就涉及到xcode裡通過新增多個targets來進行版本控制的問題了,下面就簡單說明一下: 點選左側的工程名稱,右側會出現PROJECT和TARGETS,點選你現在的target,假如叫A,右鍵彈出選單中,選擇
python 列表list和字典dict同時新增多個值,分別用extend、update方法:
>>> d = [2,3,4] >>> e = [1,2,3] >>> d.extend(e) # 用列表用extend()方法 >>> d [2, 3, 4, 1, 2, 3] >>&
封裝RecyclerView Adapter 實現可新增多個header和footer,可設定loadingView,低耦合的多種佈局。
多種佈局的recyclerview的普通寫法是重寫RecyclerView.Adapter的getItemViewType返回不同position上的type,在onCreateViewHolder(ViewGroup parent,int viewType
C#word模板新增多個表格,新增圖片程式案例
public string CreateWordFile(string CheckedInfo) { string message = ""; try {
innosetup多語言選擇,可新增多個
其實很簡單: [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" Name: "english"; MessagesFile: "compiler:Languages\Englis
通過javaMail傳送郵件,可選新增多個收件人,密送,抄送,多個附件,超實用
自己通過學習多人的程式碼,並整理了一個簡單,呼叫方便的通過javaMail傳送郵件。只需填寫發件郵箱地址,密碼;收件人地址,附件,選擇是否儲存,設定自己傳送郵件時的暱稱就ok了。程式碼自動匹配設定smtp服務地址和埠。 傳送郵件需要郵箱地址和密碼,開啟P
iOS開發,tableView側滑刪除的實現,或者新增多個側滑顯示按鈕
如果想要實現簡單的刪除操作,1 + 2 + 4方法就可以實現 ,如果你要滑動出現多個操作按鈕的話,就要實現方法5了,第五個方法說白了就是集合了前幾個方法,而且可以新增多個按鈕,如果用第5個方法,1、2、4方法可以不實現 //1 - (BOOL)tableView:(UITa
VS2015基礎 在同一解決方案下,新增多個專案
慈心積善融學習,技術願為有情學。善心速造多好事,前人栽樹後乘涼。我今於此寫經驗,願見文者得啟發。剛開始的時候,是這樣的。解決方案管理器找不到的話,可以通過下面的方式開啟儲存該解決方案的資料
java 中List包含List,如何新增多個list,Map中包含多個list,如何新增?
1、List中新增list public class TestList { public static void main(String[] args) { List<List<Integer>> vecvecRes = new ArrayLi
Easyui 繫結左側選單,右側顯示內容,動態新增多個tab
老規矩還是先上圖看效果:左側選單,右側展示內容以及title 接著看前臺jsp程式碼:前臺程式碼很簡單,按照官方的要求寫就可以,重點是紅色框裡別忘了加最後一步就是js繫結事件在這裡我給出程式碼需要的同學直接copy,這裡是onclick()點選事件,資料為測試資料,替換自己真
OSG中新增多個物體, OSG::Group的使用
之前的文章可以針對單個物體,進行平移,旋轉,縮放。 現在我想在場景中放置兩頭牛。在OSG中,放置多個物體,可以將這個多個物體放置到一個Group中,然後再將場景設定成這個Group,就可以了。 #include<osgViewer/Viewer> #inc
接到新數據庫時,分析業務常用的SQL語句
增加 臨時 columns != question 名稱 信息 語句 insert USE DataBaseName--清空當前GridView顯示,釋放內存: SELECT GETDATE() --數據庫關系圖 SELECT * FROM sysdiagra
MySQL索引使用:字段為varchar類型時,條件要使用''包起來
row prim was OS con xtra str fault 建表語句 結論: 當MySQL中字段為int類型時,搜索條件where num=‘111‘ 與where num=111都可以使用該字段的索引。當MySQL中字段為varchar類型時,搜索條件whe
一個DOM元素綁定多個事件時,先執行冒泡還是捕獲
msg 元素 .org tro code 常見 xxx == 添加 綁定在被點擊元素的事件是按照代碼順序發生,其他元素通過冒泡或者捕獲“感知”的事件,按照W3C的標準,先發生捕獲事件,後發生冒泡事件。所有事件的順序是:其他元素捕獲階段事件 -> 本元素代碼順序事件 -
當虛擬機崩潰時,你要怎麽做
blog usr 硬盤容量 tails 鏡像 而是 font snapshot 啟動 使用虛擬機做嵌入式開發,千萬不要一整個盤掛載到/root,如果你這樣做了,這絕對是噩夢的伏筆。 IF( 你的虛擬機不幸崩潰了 ) { 第一步:不要慌張 當你的虛擬機崩潰無
centos批量新增多個IP地址
在/etc/sysconfig/network-scripts/中新建檔案ifcfg-eth0-range0 vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0 輸入以下檔案內容格式: &nb