2012-05-20 34 views
23

Tôi đang cố gắng đặt hoạt ảnh để chế độ xem di chuyển lên khi bàn phím đang ẩn và xuất hiện cho các trường văn bản và tôi nhận nó hoạt động hoàn hảo, nhưng khi tiêu điểm di chuyển từ một trường văn bản khác, nó không hoạt động vì bàn phím đã được hiển thị.Phát hiện thay đổi tiêu điểm cho UITextField

Trong viewDidLoad, tôi đã đăng ký như sau:

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

và sau đó trong các phương pháp keyboardWillShow và keyboardWillHide, nó quyết định nếu quan điểm nên di chuyển hay không và động cho phù hợp. Nhưng nếu bàn phím đã được hiển thị và người dùng nhấp vào một trường văn bản khác cần xem để di chuyển lên, phương thức sẽ không được gọi. Có cách nào để phát hiện xem trọng tâm đã được thay đổi thành trường văn bản khác khi bàn phím đã được hiển thị chưa? Nó sẽ là tuyệt vời nếu có một cách để làm điều này mà không cần phải thiết lập tất cả các lĩnh vực văn bản để đại biểu.

Xin cảm ơn trước.

Trả lời

57

Sử dụng phương thức ủy quyền UITextField .. tốt hơn về trường hợp của bạn so với phương pháp bàn phím .. khi textField lấy tiêu điểm - (void)textFieldDidBeginEditing:(UITextField *)textField; sẽ bị kích hoạt .. và khi mất tiêu điểm - (void)textFieldDidEndEditing:(UITextField *)textField; sẽ bị kích hoạt.

+1

Cảm ơn đã phản ứng. Nếu tôi làm điều này, có cách nào để lấy userInfo không? Bởi vì trong các phương thức đó, tôi nhận được UIKeyboardAnimationDurationUserInfoKey và UIKeyboardFrameEndUserInfoKey từ userInfo để thiết lập hoạt ảnh, nhưng tôi không chắc chắn làm thế nào tôi có thể làm như vậy khi không có thông báo nhận được thông qua như một tham số? – Dennis

+0

whats các loại thông tin bạn cần? –

+1

UIKeyboardAnimationDurationUserInfoKey, cho thời lượng hoạt ảnh của bàn phím (do đó hoạt ảnh cho chế độ xem di chuyển có thể khớp) và UIKeyboardFrameEndUserInfoKey để nhận được chiều cao của bàn phím. Tôi không muốn mã hóa cứng các giá trị. – Dennis

6
-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField { 
if (textField.tag == 1) { //first textField tag 
    //textField 1 
} 
else { 
    //textField 2 
} 
} 
1

Sử dụng UITextFieldDelegate

func textFieldDidBeginEditing(textField: UITextField) { 
     println("did") 
     if textField.tag == 1{ 
      self.txtFullName.layer.borderColor = UIColor.blueColor().CGColor 
     } 
    } 
+0

Nó thực sự là func textFieldDidBeginEditing (_ textField: UITextField) {chữ ký hàm – leofontes

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