2011-12-29 27 views
9

Tôi có một số UIView với UITextViewUITextField làm chế độ xem phụ. Tôi muốn bàn phím tự động xuất hiện trên cuộc gọi textFieldShouldReturn.UITextView's trở thànhFirstResponsder không hoạt động proprly

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    [textView becomeFirstResponder]; 
    return YES; 
} 

nhưng điều này không hoạt động VÀ vì lý do nào đó, nó hiển thị bàn phím với con trỏ trên dòng tiếp theo trong chế độ xem văn bản. Tôi đã cố gắng đặt văn bản nil trong chế độ xem văn bản nhưng nó tự động gọi phương thức textDidChange và di chuyển con trỏ trên dòng mới mà không có bất kỳ văn bản nào.

enter image description here

Kỹ thuật này cùng làm việc một cách chính xác cho một UITextField và cũng hoạt động tốt với iOS 5.0 nhưng làm thế nào để sửa lỗi này trong iOS 4.3. Hãy cho tôi biết nếu bạn có bất kỳ thay thế nào.

Tôi có thiếu thứ gì đó hiển nhiên không?

+0

Bạn có thể hiển thị thêm mã không? Ngoài ra nếu bạn sử dụng một Storyboard tôi tin rằng có một cách để có UITextView được chọn khi xem đầu tiên đi lên, mà nên mang lên bàn phím, do đó bạn không phải làm điều đó bằng tay. –

+0

Để thêm vào nhận xét của Kinetic, các dự án Storyboard chỉ biên dịch đúng cho iOS 5 để có thể là một vấn đề. Nếu không, có lẽ bạn đang làm một cái gì đó sôi nổi trong phương pháp đại biểu UITextView của bạn? Đăng thêm mã để được trợ giúp cụ thể hơn vì khối bạn đã đăng dường như không phải là vấn đề. – Keller

Trả lời

31

Có lỗi đã biết trong iOS với việc từ chức và trở thành người trả lời đầu tiên trong cùng một vòng lặp. Hãy thử như sau

[textField resignFirstResponder]; 
[textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0]; 
+1

Nhân tiện, tôi không nghĩ rằng bạn phải gọi resignFirstResponder trước đây, tôi nghĩ rằng trở thànhFirstResponder là đủ. – juanjo

+0

Cảm ơn bạn, điều này đã làm việc cho tôi! – c0d3Junk13

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