2011-11-09 10 views
7

Sự khác biệt giữa UIKeyboardFrameBeginUserInfoKey và UIKeyboardFrameEndUserInfoKey là gì?UIKeyboardFrameBeginUserInfoKey

Điều đó có nghĩa là từ "bắt đầu" trả về giá trị khác với giá trị "kết thúc" trả về?

Cảm ơn!

Trả lời

13

UIKeyboardFrameBeginUserInfoKey sẽ trả về khung của bàn phím trước khi hoạt ảnh bắt đầu. UIKeyboardFrameEndUserInfoKey sẽ trả về khung của bàn phím sau khi hoạt ảnh đã hoàn thành. Như một ví dụ, lấy đoạn mã sau đây:

NSDictionary* info = [notification userInfo]; 
CGRect beginFrame = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; 
CGRect endFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 

Nếu bạn đã đưa ra giá trị beginFrameendFrame trong cửa sổ gỡ lỗi, bạn có thể tìm thấy một cái gì đó như thế này:

(gdb) print beginFrame 
$1 = { 
    origin = { 
    x = 0, 
    y = 480 
    }, 
    size = { 
    width = 320, 
    height = 216 
    } 
} 
(gdb) print endFrame 
$2 = { 
    origin = { 
    x = 0, 
    y = 264 
    }, 
    size = { 
    width = 320, 
    height = 216 
    } 
} 

Vì vậy trên một chiếc iPhone, điều này cho thấy rằng bàn phím sẽ hoạt hình ở dưới cùng của màn hình. Kích thước của bàn phím không thay đổi (như mong đợi), nhưng các tọa độ y hiển thị vị trí bắt đầu và kết thúc của bàn phím.

+0

Trước khi bàn phím bắt đầu di chuyển, nó phải là y = 0. Tôi không hiểu tại sao nó là 480. -480 có ý nghĩa hơn khiến bàn phím không nằm trên màn hình ... – Bernard