簡體   English   中英

使用滑動手勢關閉鍵盤(如在消息應用程序中)

[英]Dismiss keyboard with swipe gesture (as in Message app)

當鍵盤顯示在iPhone的消息應用程序上時,如果用戶從消息表視圖開始向下滑動並繼續進入鍵盤區域,鍵盤將開始關閉。 如果他們在此過程中上下移動手指,鍵盤會隨之移動。

Apple是否使用私有API執行此操作,或者是否有一種方法可以控制鍵盤(我假設)手勢識別器?

我創建了一個提供所需功能的UIView類別:

https://github.com/danielamitay/DAKeyboardControl

編輯:它確實已在應用商店中使用。

幸運的是,Apple在UIScrollView上添加了方便的屬性keyboardDismissMode ,讓您的生活更輕松。

現在,只需更改Storyboard上的單個屬性,或者添加一行代碼,您的應用就可以像Messages.app一樣運行!

此屬性使用新的UIScrollViewKeyboardDismissMode枚舉。 此枚舉的可能值如下:

UIScrollViewKeyboardDismissModeNone        // the keyboard is not dismissed    automatically when scrolling
UIScrollViewKeyboardDismissModeOnDrag      // dismisses the keyboard when a drag begins
UIScrollViewKeyboardDismissModeInteractive // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss

這是要更改為在滾動時關閉鍵盤的Storyboard屬性:

在此輸入圖像描述

希望有助於解決您的問題

在iOS 7中,您現在可以在UIScrollView上以交互方式關閉鍵盤。

在UIScrollView中關閉鍵盤

希望能幫助別人。

您可以使用UISwipeGestureRecognizer執行此操作。 我不知道如何使用代碼實現它,但如果你使用新的xcode 4.2 beta,那么這是一個簡單的方法:

  1. 創建IBAction:

- (IBAction)dismiss:(id)sender;

  1. 轉到xib中的視圖,並將您查看的類設置為UIControl。

  2. 將UISwipeGestureRecognizer從庫拖動並連接到視圖。

  3. 將IBAction(TouchDown)與UISwipeGestureRecognizer連接。

  4. 編寫代碼來解雇鍵盤:

     - (IBAction)dismiss:(id)sender { [yourTextField resignFirstResponder]; } 

完成!

swift中,您可以使用下面的代碼來獲取當前鍵盤的視圖容器( 如果存在 ),而不是您可以更改代碼中的框架:

UIApplication.shared.windows
    .filter{ NSStringFromClass($0.classForCoder) == "UIRemoteKeyboardWindow" }
    .first?.subviews.filter { NSStringFromClass($0.classForCoder) == "UIInputSetContainerView" }
    .first?.subviews.filter { NSStringFromClass($0.classForCoder) == "UIInputSetHostView" }
    .first

順便說一句,這里有一個名為Reveal的工具,你可以看到層次結構的視圖。

我認為最好的方法是在文本輸入容器上方放置一個隱藏按鈕。 長條帶,當它檢測到觸地得分並釋放或取消時,然后隱藏鍵盤。

我要去試試,我會告訴你我是怎么走的。

簡短的回答; 他們最有可能在那里做一些'私人API'的事情。

我非常確定鍵盤位於應用程序窗口上方的獨立視圖中(您無法訪問/控制它,無論如何,它始終顯示在頂部)。 您可以做的最多是讓輸入視圖成為/退出第一響應者狀態,鍵盤將相應地顯示/消失:全部或全部。

您可以獲得鍵盤視圖的句柄並更改其框架屬性(使用記錄的類和未記錄的類的未記錄的屬性),但我很確定這會讓您被踢出商店。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM