2011-12-08 57 views
7

我在我的應用程序中有一個聊天功能,我試圖通過向下拖動手指隱藏鍵盤,就像如何隱藏IOS 5中的短信應用程序中的鍵盤一樣。通過在iOS 5中拖動手指像短信應用隱藏鍵盤

我有子類的UITableView,但只要開始滾動我不再讓來電

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

我想知道我怎麼能得到滾動並找出手指在滾動過程中,這樣,如果開始接近鍵盤我可以開始隱藏它。

我認爲這是一個很多人會想要的功能,關於如何做到這一點的任何想法?

+0

據我所知,如果表視圖不會接管拖拽手勢,那麼以後所有的觸摸事件被髮送到滾動視圖來代替。所以你需要在'UIScrollView'的子類中實現這個,或者在它的一個委託中。 –

+0

是的,我想過,但不知道如何用我的版本 – odyth

+0

替換tableview的滾動查看器對不起,您可以忽略我以前的評論。我不知道'UITableView'是'UIScrollView'的一個子類。我從來沒有見過像以前那樣的滾動視圖設置。 –

回答

7

DAKeyboardControl爲你在找什麼的MIT許可代碼源。

+0

@odyth,這是你應該想要的答案。我只是想自己做這件事,DAKeyboardControl超級簡單易用。一行代碼(+ #import),它就像一個魅力。 –

+0

這是非常古老而無用的圖書館! – AsifHabib

2

的UITableView從UIScrollView的繼承,這樣你就可以檢測與UIScrollViewDelegate方法,如- (void)scrollViewDidScroll:(UIScrollView *)scrollView

+0

儘管如何獲得用戶手指的位置? – odyth

+0

創建您自己的UITableView的子類,實現UIScrollView的'touchesShouldBegin:withEvent:inContentView:'方法來檢測觸摸點,然後監視'scrollViewDidScroll:'中的移動以隱藏鍵盤。 – changx

3

我已經啓用了該功能在我的應用程序中,在Daniel's DAKeyboardControl library的幫助下。你可以只用一行語句執行的iMessage式鍵盤隱藏酸度:

[self.view addKeyboardPanningWithActionHandler:^(CGRect keyboardFrameInView) { 
    // Move interface objects accordingly 
    // Animation block is handled for you 
}]; 
2

幸運的是,在iOS 7中,Apple在UIScrollView上添加了方便的屬性keyboardDismissMode。現在,只需通過更改Storyboard上的單個屬性,或添加一行代碼,您的應用就可以像消息一樣運行。

此屬性使用新的ScrollViewKeyboardDismissMode枚舉。枚舉的可能值如下所示。

UIScrollViewKeyboardDismissModeNone 
UIScrollViewKeyboardDismissModeOnDrag 
UIScrollViewKeyboardDismissModeInteractive 

這裏是連環畫的財產做辭退鍵盤上的滾動