2011-12-08 12 views
7

Mam funkcję czatu w mojej aplikacji i staram się ukryć klawiaturę przeciągając palcem w dół, tak jak można ukryć klawiaturę w aplikacji sms na IOS 5 .ukryć klawiaturę przeciągając palcem jak aplikacja sms w iOS 5

mam podklasy UITableView, jednak jak tylko zacznie się przesuwać już nie dostać zaproszenia do

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

Zastanawiam się w jaki sposób mogę uzyskać przewijanie i dowiedzieć się, gdzie palec podczas przewijania tak, że jeśli zaczyna zbliżać się do klawiatury Mogę zacząć to ukrywać.

Myślę, że jest to funkcja, której wiele osób będzie chciało, wszelkie pomysły na jej wykonanie?

+0

AFAIK jeśli widok tabeli nie przejmie gest przeciągania, a następnie wszystkie kolejne wydarzenia dotykowe są wysyłane do widoku zamiast przewijania. Musisz to zaimplementować w podklasie 'UIScrollView', lub być może w delegacie tego. –

+0

Tak, pomyślałem o tym, ale nie byłem pewien, jak zastąpić przeglądarkę przewijania tableview moją wersją – odyth

+0

Niestety, możesz zignorować mój poprzedni komentarz. Nie miałem pojęcia, że ​​'UITableView' jest podklasą' UIScrollView'. Nigdy wcześniej nie widziałem takiej konfiguracji przewijania. –

Odpowiedz

7

DAKeyboardControl on licencjonowany kod źródłowy MIT za to, czego szukasz.

+0

@odyth, to jest odpowiedź, której powinieneś chcieć. Właśnie chciałem zrobić to samemu, a DAKeyboardControl jest bardzo łatwy w użyciu. jedna linia kodu (+ #import) i działa jak urok. –

+0

To jest bardzo stara i bezużyteczna biblioteka teraz! – AsifHabib

2

UITableView dziedziczy od UIScrollView, więc można wykryć pozycję przewijania z metod UIScrollViewDelegate jak - (void)scrollViewDidScroll:(UIScrollView *)scrollView

+0

Jak jednak uzyskać pozycję palca użytkownika? – odyth

+0

Utwórz własną podklasę UITableView, zaimplementuj metodę UIScrollView 'touchesShouldBegin: withEvent: inContentView:', aby wykryć punkt dotykowy, a następnie monitoruj ruch w 'scrollViewDidScroll:', aby ukryć klawiaturę, lub nie. – changx

3

ja włączył tę funkcję w mojej aplikacji przy pomocy Daniel's DAKeyboardControl library. Można zaimplementować styl iMessage klawiatura ukrycia kwasowość za pomocą jednego wiersza stwierdzeniem:

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

Na szczęście w iOS 7 Apple dodał przydatny obiekt keyboardDismissMode na UIScrollView. Teraz Twoja aplikacja może zachowywać się jak Wiadomości, zmieniając jedną właściwość w Storyboard lub dodając pojedynczą linię kodu.

Ta właściwość używa nowego wyliczenia ScrollViewKeyboardDismissMode. Możliwe wartości wyliczenia są następujące.

UIScrollViewKeyboardDismissModeNone 
UIScrollViewKeyboardDismissModeOnDrag 
UIScrollViewKeyboardDismissModeInteractive 

Oto nieruchomość storyboard zrobić schować klawiaturę na zwoju

Powiązane problemy