我有一些複雜的iOS視圖層次結構。一段文本是可編輯的UITextField。當用戶觸摸它時,它成爲第一響應者,並且是可編輯的。允許在複雜的iPhone UI上完成文本編輯的最佳方式
儘管如此,最好的做法應該是在編輯控件之外的任何位置觸摸它,使其退出第一響應者並結束編輯。完成這個的最好方法是什麼?
技術我已經試過:
- 使用
exclusiveTouch
屬性,它停止與其他控件交互的用戶,但不會導致編輯結束。也禁止用戶與我的工具欄「完成」按鈕進行交互。 - 將透視UIView放在文本字段控件下,並放在其他所有內容(工具欄除外)的頂部,然後使用觸摸來結束編輯。這是有效的,但我最終將文本字段重新放置到位於整個層次結構之上的其他隨機視圖中,這意味着我必須在多個地方處理文本字段的佈局,因爲它不再居住在它居住的地方最初,我必須將其所有行爲從其「屏蔽」視圖中來回委託給它的本地容器,它具有所有相關的邏輯。
有沒有一個優雅的解決方案,我錯過了這個問題?我認爲這一定是一個常見的設計問題。
謝謝。
謝謝。啊,但textview被隱藏在我的對象層次結構中,並且不知道整個屏幕的邊界 - 發現這隻會再次圍繞視圖。更有問題的是,文本視圖可能不是整個屏幕區域中的「頂級」子視圖 - 如果不是,那麼在它周圍添加對等視圖並不能保證什麼,對吧? – 2010-08-31 18:32:21
如果不知道該面罩將覆蓋哪些面罩以及該面罩不會覆蓋哪個區域,則無法遮蓋該區域。所以任何解決方案都需要足夠的範圍來收集這兩個邊界。要麼將文本直接向上傳遞,要麼將視圖矩形/區域向下關閉,或者同時傳遞到中間的某個東西。如果不是用於文本視圖的控制器,則用於要被覆蓋的東西的控制器似乎與鞏固這兩個區或區域的任何地方一樣好。 – hotpaw2 2010-09-01 05:56:17
感謝您的討論。我已經將你的洞察力跟進到你的實際答案中。 – 2010-09-03 17:16:53