2013-04-26 13 views
7

Tôi có Chế độ xem tùy chỉnh (NotifyView) được thêm vào UIWindow bằng nút gạt (loại bỏ nó khỏi UIWindow). Chế độ xem này được thêm khi thông báo PUSH có trong didReceiveRemoteNotification có một số trường hợp khi tôi có thể ở trên màn hình bất kỳ và bàn phím của tôi là LÊN qua UITextfield/UITextview. Ở giai đoạn này nếu có ấn tượng, NotifyView được thêm vào UIWindow phía sau bàn phím. Tôi muốn từ chức bàn phím khi PUSH nhận được như vậy cho rằng tôi có thể:xóa bàn phím khỏi Màn hình mà không cần gọi lại từ chốiFirstResponder

  • gửi một thông báo với NSNotificaitonCenter phải từ chức tất cả các textfields/TextView (nếu có ai là firstResponder). Đối với điều này tôi phải giữ con trỏ hoạt động với textfield hiện tại/textview trong tất cả các bộ điều khiển.

  • tạo biến trong AppDelegate và gán các trường văn bản/textview đang hoạt động cho nó và trên PUSH và resignFirstResponder trong số PUSH.

Cả trong những giải pháp sẽ yêu cầu làm thay đổi mã tất cả các bộ điều khiển và tôi đang tìm kiếm một cái gì đó chung chung hơn như:

  • có thể có được bất cứ cách nào mà qua đó tôi chỉ đơn giản là có thể loại bỏ các phím từ màn hình khi nhận PUSH
  • hoặc tôi có thể tìm nạp ứng dụng trả lời đầu tiên hiện tại của ứng dụng và từ bỏ nó một cách rõ ràng.

đây có thể là các giải pháp chung.

Sẽ rất hữu ích nếu ai đó có thể tạo thuận lợi cho quá trình suy nghĩ này hoặc ai đó có bất kỳ giải pháp nào ngay lập tức cho trường hợp này.

+0

Duplicate? http://stackoverflow.com/questions/1823317/get-the-current-first-responder-without-using-a-private-api – rdurand

Trả lời

6

Bạn có thể sử dụng phương pháp dưới đây

[[[UIApplication sharedApplication] keyWindow] endEditing:YES] 
+1

điều này làm việc hoàn hảo cho tôi ... cảm ơn ... – samfisher

4

Hãy thử thế này, đối với tôi nó hoạt động tốt [yourView endEditing:YES]

+0

Tôi đang tìm thêm một bước chung chung nữa vì điều này tôi đã duy trì bản nhạc hiện tại của mình xem để gọi điều này. – samfisher

+0

Được gọi là phương thức này sẽ thực sự gọi 'resignFirstResponder' nếu có UITextField trong khung nhìn. https://developer.apple.com/reference/uikit/uiview/1619630-endediting –

0

Vấn đề đó là, khi bạn muốn trả lại sự tập trung.

Tôi đã triển khai khi nghe từng trường văn bản và bộ nhớ đệm là mới nhất. Hơn chỉ từ chức mà một (trong đẩy) sau đó khôi phục lại nhà nước, yêu cầu tập trung cho điều đó.

0

Hãy thử điều này trong phương pháp đại biểu ...

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [self.view endEditing:YES]; // added this in for case when keyboard was already on screen 
    [self editStartDate:textField]; 
    return NO; 
}