2015-01-25 10 views
8

Jestem świadomy, że mogę uzyskać wysokość UIKeyboard od UIKeyboardFrameEndUserInfoKey na keyboardWillShow i keyboardDidShow powiadomienia są wyzwalane, gdy staje się pierwszym ratowniczym.iPhone iOS - uzyskaj wysokość UIKeyboard PRZED klawiaturąWillShow

JEDNAK, chciałbym poznać oczekiwaną wysokość klawiatury przed tymi zdarzeniami, dzięki czemu można ustawić niektóre elementy projektu w viewDidLoad kontrolera widoku.

Ponieważ urządzenia się zmieniają, a nowy pasek korekty pisowni zmienia wysokość klawiatury NIE chcę na sztywno kodować wysokości.

Czy ktoś wie, jak uzyskać oczekiwaną wysokość z klawiatury, biorąc pod uwagę, czy ma automatyczną korektę, czy nie itp?

+0

Co dokładnie Potrzebujesz tego? Bądź konkretny, ponieważ prawie na pewno chcesz zastosować inne podejście. – Wain

+0

Zwróć uwagę na część mojego pytania, które mówi: "Chciałbym poznać oczekiwaną wysokość klawiatury przed tymi zdarzeniami, aby móc ustawić pewne elementy projektu w viewDidLoad kontrolera widoku". Aby rozwinąć to: mam elementy, które są rozmieszczone na podstawie wysokości klawiatury, ale nie w odpowiedzi na to, że jest podnoszony. – Zigglzworth

+2

Nie możesz wiedzieć wcześniej. Wysokość klawiatury może być różna dla każdego pola tekstowego lub widoku tekstowego na ekranie. Jeden może mieć 'inputAccessoryView', a inny może nie. – rmaddy

Odpowiedz

0

Można to zrobić poprzez następujący sposób:

- (void)viewDidLoad { 
[super viewDidLoad]; 
[self initializeTextView]; 

} - (void) initializeTextView {

// Listen for keyboard appearances and disappearances 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardDidShow:) 
              name:UIKeyboardDidShowNotification 
              object:nil]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardDidHide:) 
              name:UIKeyboardDidHideNotification 
              object:nil]; 

myColoredTextview = [[UITextView alloc]initWithFrame:CGRectMake(0, 20, 300, 100)]; 
myColoredTextview.delegate = self; 
[self.view addSubview:myColoredTextview]; 
myColoredTextview.backgroundColor = [UIColor lightGrayColor]; 
} 

- (void)keyboardDidShow: (NSNotification *) notif{ 
// Do something here 
NSLog(@"show:%@",notif); 
NSDictionary *userInfo = [notif valueForKey:@"userInfo"]; 
CGRect kbFrame = [[userInfo objectForKey:@"UIKeyboardFrameBeginUserInfoKey"] CGRectValue]; 
NSLog(@"keboardHeight:%f",kbFrame.size.height); 

}

- (void)keyboardDidHide: (NSNotification *) notif{ 
// Do something here 
NSLog(@"hide:%@",notif); 

}

Powiązane problemy