2012-03-22 8 views
6

Powiel możliwe:
iMessage Style Receding Keyboard in an iOS AppJak przenieść klawiaturę iPhone'a w dół jak w Messages.app?

W iOS5 Wiadomości aplikacji, można przesunąć palcem w dół na klawiaturze, aby doprowadzić go w górę iw dół. Odbywa się to również w aplikacji iA Writer w AppStore. Jak mogę to zrobić w kodzie, to znaczy uzyskać dostęp i zmodyfikować pozycję Y tablicy UIKeyboard?

+0

Odpowiedziano tutaj: http://stackoverflow.com/questions/7780753/imessage-style-receding-keyboard-in-an-ios-app – Ginny

+0

yes, ale odpowiedź na to pytanie została jeszcze lepiej wyjaśniona przez CodaFi. @CodaFi, powinieneś naprawdę skopiować swoją odpowiedź od tego miejsca na pytanie, które zostało zamknięte na korzyść, ponieważ odpowiedź tam może zmylić, jak łatwo jest to rozwiązać za pomocą DAKeyboardControl (i być może innych, nie próbowałem im). Nic nie może być tak proste jak jeden #import plus jedna linia kodu, aby zrobić to, czego potrzebujesz. –

Odpowiedz

9

Dlaczego wyważać otwartych drzwi? Istnieje kilka projektów open-source dostępne że mimick oddala się messages.app klawiaturę:

  1. http://cocoacontrols.com/platforms/ios/controls/madismissivetextview

  2. http://cocoacontrols.com/platforms/ios/controls/dakeyboardcontrol

  3. http://cocoacontrols.com/platforms/ios/controls/imessagekeyboardeffect

aby wymienić tylko kilka.

+0

Po wydaniu wersji iOS7 nie udało mi się znaleźć dobrego projektu do wdrożenia tego rozwiązania z obsługą iOS6/7. – derpoliuk

+1

Po wydaniu systemu iOS 7 nie jest to już konieczne, ponieważ Apple zaimplementował je w 'UIScrollView' –

2

Nie ma sposobu, aby to zrobić, ale może być w stanie zmodyfikować ramkę klawiaturę bezpośrednio tak:

UIWindow* tempWindow; 

//Because we cant get access to the UIKeyboard throught the SDK we will just use UIView. 
//UIKeyboard is a subclass of UIView anyways 
UIView* keyboard; 

//Check each window in our application 
for(int c = 0; c < [[[UIApplication sharedApplication] windows] count]; C++) 
{ 
    //Get a reference of the current window 
    tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:c]; 

    //Get a reference of the current view 
    for(int i = 0; i < [tempWindow.subviews count]; i++) 
    { 
     keyboard = [tempWindow.subviews objectAtIndex:i]; 

     if([[keyboard description] hasPrefix:@"(lessThen)UIKeyboard"] == YES) 
     { 
      //If we get to this point, then our UIView "keyboard" is referencing our keyboard. 
     } 
    } 
} 
+0

Dlaczego nie używać -isKindOfClass: zamiast -hasPrefix? –

+0

Czy to AppStore jest legalne? – Snowman

+0

@ RichardJ.RossIII ponieważ isKindOfClass powie ci tylko, czy jest to UIView, a WSZYSTKIE obiekty zwrócone przez tempWindow.subviews są obiektami UIView. –

Powiązane problemy