2011-07-06 67 views
5

Ứng dụng của tôi có bộ điều khiển điều hướng. Tất cả các bộ điều khiển của tôi đều bật và ấn. Một bộ điều khiển có 12 vùng văn bản. 2 textfields gọi các bộ điều khiển khác. Đây là một UIDatePicker và sau đó với các phương thức ủy nhiệm, chúng ta thiết lập ngày hiện tại trong hai trường này.Không thể ẩn bàn phím trong iOS

- (IBAction) beginEditingDateStart:(id) sender{ 
[sender resignFirstResponder]; 

[self.remedyName becomeFirstResponder]; 
[self.remedyName resignFirstResponder]; 
[self.doseName resignFirstResponder]; 
[self.count resignFirstResponder]; 
[self.dateFrom resignFirstResponder]; 
[self.dateTill resignFirstResponder]; 
[self.doseAmount resignFirstResponder]; 

[self.view endEditing:NO]; 
[self.view resignFirstResponder]; 
    DatePickerViewController *dateView = [[DatePickerViewController alloc] initWithNibNameAndKey:@"DatePickerViewController" bundle:[NSBundle mainBundle] key:@"from"]; 
dateView.delegate = self; 
[self.navigationController pushViewController:dateView animated:YES]; 
[dateView release]; 

Vấn đề là khi tôi bắt đầu chỉnh sửa hai trường này và bàn phím đang hoạt động, chúng tôi đi tới bộ điều khiển ngày bằng bàn phím và ẩn bộ đếm ngày của tôi. Tôi biết rằng vấn đề này có thể được giải quyết nhưng tôi không biết làm thế nào. Làm ơn giúp tôi.

Trả lời

0

Nó có thể là dòng này mà gây ra những rắc rối:

[self.remedyName becomeFirstResponder]; 

Nếu không, bạn có thể làm một cái gì đó như thế này để đảm bảo tất cả quan điểm đã từ chức responder đầu tiên:

- (void)resignFirstResponderForSubviewsOfView:(UIView *)aView { 

    for (UIView *subview in [aView subviews]) { 

     if ([subview isKindOfClass:[UITextField class]] || [subview isKindOfClass:[UITextView class]]) 
      [(id)subview resignFirstResponder]; 

     [self resignFirstResponderForSubviewsOfView:subview]; 
    } 
} 

Sau đó gọi nó như thế này từ bộ điều khiển chế độ xem:

[self resignFirstResponderForSubviewsOfView:[self view]]; 
+0

Cảm ơn trả lời của bạn. Tôi kiểm tra mã của bạn nhưng bàn phím không biến mất. Tôi thử mọi thứ và thấy rất nhiều chủ đề nhưng nó không giúp được gì. – Oleg

13

Điều này sẽ yêu cầu mỗi lượt xem phải từ chối trả lời đầu tiên.

[self.view endEditing:YES]; 

Vì điều này sẽ yêu cầu mỗi lượt xem từ chối trả lời đầu tiên tất cả các cuộc gọi khác để từ chối trả lời đầu tiên là không cần thiết. Họ cần được loại bỏ và giảm nguy cơ bị gọi một cái gì đó không đúng cách hoặc ra hoặc bật như

[self.remedyName becomeFirstResponder]; 

Bạn có thể đọc thêm về nó trong Apple Docs

+0

Cảm ơn nhưng tôi cũng làm điều đó. – Oleg

+0

Các đối số 'CÓ' là để buộc các lượt xem từ chối trả lời đầu tiên. Bạn đã sử dụng 'NO' vì vậy có thể một chế độ xem chưa sẵn sàng để bỏ đi –

+0

Tôi cũng có một số lần xem trước trên self.view của mình. Nếu nó giúp. – Oleg

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