2012-04-19 68 views
9

Bàn phím của tôi xuất hiện với textView, tôi muốn ẩn bàn phím khi người dùng nhấn nút quay lại trên thanh điều hướng.Cách ẩn bàn phím sau khi nhấn vào nút quay lại UINavigationBar trên ios

Tôi đã thử này:

-(void)viewWillDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

và điều này:

-(void)viewDidDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

Nhưng nó không hoạt động, làm thế nào tôi có thể làm điều này?

chỉnh sửa:

Tôi tìm thấy giải pháp ở đây:

iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheet

+0

đảm bảo IBOutlets được binded một cách chính xác và viewDid/WillDisappear đang được gọi bằng cách đặt câu NSLog –

+0

Bạn thậm chí không cần phải tự mình từ bỏ đầu tiên. Khi khung nhìn tắt màn hình, nó sẽ tự động từ chức và có bàn phím biến mất. Bạn có thể kiểm tra hành vi này bằng cách tạo một dự án mới cho iphone bằng mẫu "Ứng dụng chi tiết chính". Mở bảng phân cảnh và chuyển đến màn hình chi tiết. Thêm một 'UITextField' vào khung nhìn và chạy ứng dụng. Khi bạn nhấn vào trường, bàn phím sẽ xuất hiện và khi bạn nhấn nút quay lại trên thanh điều hướng, nó sẽ biến mất. – DBD

+0

Là đúng nhưng, nhưng trường hợp đến khi tôi nhấn vào một nút, một tờ biểu mẫu phương thức xuất hiện với một UINavigationController, tôi đẩy vào một nút khác điều hướng trong chế độ xem khác, tôi đẩy vào một textView, bàn phím xuất hiện, tôi quay trở lại viewController trước đó và keybord vẫn còn hiện diện. – Anthony

Trả lời

17

Đặt này vào phương pháp buttonPress -

[self.view.window endEditing:YES]; 

Chỉnh sửa - điều này cũng cho phép bạn nhận được các nội dung của văn bản đang được chỉnh sửa khi nhấn nút "quay lại"

+0

cho điều này bạn phải ghi đè lên mặc định trái điều hướng barbutton mục –

+0

tôi biết - khá thẳng về phía trước tho – SomaMan

+0

nó hoạt động cho tôi ... – iSwaroop

2

Kết hợp các câu trả lời trên và kiểm tra các nút quay lại sẽ được thực hiện bằng cách này

- (void)viewWillDisappear:(BOOL)animated{ 
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
    // back button was pressed. We know this is true because self is no longer 
    // in the navigation stack. 
    [self.view.window endEditing:YES]; 
} 

[super viewWillDisappear:animated]; 

}

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