2015-10-27 20 views
5

Hãy xem xét trường hợp này, tôi có một textview với bàn phím Bỏ qua thiết lập tương tác trong bảng phân cảnh, vì vậy khi người dùng cuộn xuống và có thể loại bỏ bàn phím tương tác. Tôi có những hạn chế về việc xem văn bản ở dưới cùng để đảm bảo nó luôn được hiển thị đầy đủ trên chế độ xem.Làm thế nào để phát hiện các thay đổi khung bàn phím khi loại bỏ bàn phím tương tác?

Vấn đề hiện tại là khi người dùng từ từ cuộn xuống để loại bỏ bàn phím, tôi không thể phát hiện các thay đổi của khung bàn phím. Tôi đã thử UIKeyboardWillHideNotificationUIKeyboardWillChangeFrameNotification, chúng chỉ được gọi sau khi bàn phím bị loại bỏ.

Vì vậy, câu hỏi của tôi là, làm thế nào chúng ta có thể phát hiện các thay đổi khung bàn phím đồng thời khi loại bỏ bàn phím tương tác?

Trả lời

5

Bạn không nên thay đổi chiều cao textView để phù hợp với tất cả chế độ xem. Thay vào đó - bạn nên thay đổi trường contentInset để textView của bạn sẽ ở cùng độ cao và bạn sẽ không phải lo lắng về việc theo dõi khung của bàn phím tương tác. Xem câu trả lời tại đây: How do I scroll the UIScrollView when the keyboard appears?

+0

Hãy dùng thử! Nó đã cứu tôi rất nhiều thời gian :) – quarezz

+0

vâng, đây là cách chính xác để làm điều đó –

-2

Trong phương pháp viewDidLoad của bạn thêm các dòng:

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(keyboardWillShow:) 
             name:UIKeyboardWillShowNotification 
             object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWillHide:) 
              name:UIKeyboardWillHideNotification 
              object:nil]; 

các thêm các phương pháp để viewController

- (void)keyboardWillShow:(NSNotification *)notification 
{ 
    NSDictionary *userInfo = [notification userInfo]; 
    CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    [UIView animateWithDuration:0.30 
          delay:0.0 
         options:(7 << 16) // This curve ignores durations 
        animations:^{ 
         self.buttonsBottomConstraint.constant = keyboardSize.height - self.footerView.bounds.size.height + 4.0; 
         [self.view layoutIfNeeded]; 
        } 
        completion:nil]; 
} 

- (void)keyboardWillHide:(NSNotification *)notification 
{ 
    [UIView animateWithDuration:0.30 
          delay:0.0 
         options:(7 << 16) // This curve ignores durations 
        animations:^{ 
         self.buttonsBottomConstraint.constant = 0.0; 
         [self.view layoutIfNeeded]; 

        } 
        completion:nil]; 


} 
5

của bạn Nếu bạn muốn quan sát khung bàn phím thay đổi ngay cả khi bàn phím đã được kéo bạn có thể sử dụng công cụ này: https://github.com/brynbodayle/BABFrameObservingInputAccessoryView

Về cơ bản, bạn tạo chế độ xem đầu vào trình giữ chỗ cho bàn phím (luôn gắn vào bàn phím mọi lúc, ngay cả khi kéo) và bạn quan sát các thay đổi của khung hình. Những thay đổi đó đang được trả lại trong một khối, vì vậy bạn luôn có được khung của bàn phím.

Các vấn đề liên quan