2012-02-27 40 views
5

Hiện tại tôi có một UITextField trong một ô tùy chỉnh và tôi muốn lấy toạ độ Y của UITextField đó ở cấp độ của View Controller (UIView). Hiện tại tôi đang cố gắng thực hiện một việc như sau:Nhận UITextField Y tọa độ trên cấp độ UIView?

if (thetextField.superview.superview.superview.frame.origin.y >= keyboardY) { 

} 

Nhưng dường như tọa độ Y luôn bằng 0 khi thực tế là không. Có bất kì cách nào để đạt được điều này không?

Tôi đang làm điều này vì tôi muốn phát hiện xem UIKeyboard có đang chặn UITextField ở cấp UIView để tôi có thể sắp xếp lại các ô của mình cho phù hợp hay không.

Cảm ơn!

Trả lời

9

Kiểm tra convertPoint:* phương thức trong UIView documentation. Các phương thức này cho phép bạn ánh xạ điểm đến hoặc từ các tọa độ chế độ xem khác.

Với điều kiện là self là một bộ điều khiển xem, dòng này trả về nguồn gốc trường text trong Nhìn ra điều khiển của tọa độ:

[thetextField convertPoint:thetextField.frame.origin toView:self.view]; 

Bạn cũng có thể chuyển đổi dễ phân biệt trong một thời trang tương tự như sử dụng convertRect:* phương pháp.

+1

Tuyệt vời! btw của nó frame.origin :) –

+0

Đối với tôi điều này là làm việc .. let originInSuperview: CGPoint = textField .convertPoint (CGPointZero, toView: self.view) print (originInSuperview) Đây là cho nhanh chóng .. –

0

Swift 3 phiên bản:

thetextField.convert(thetextField.frame.origin, to:self.view) 

Nó trả về một CGPoint, vì vậy bạn có thể truy cập vào "x" hoặc tài sản "y".

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