2015-12-14 22 views
8

Tôi muốn thêm nút Done trên đầu bàn phím ở bên phải trong iOS cho một textView.Vui lòng cho tôi biết làm cách nào tôi có thể làm điều đó?Làm cách nào để thêm nút được thực hiện trên bàn phím trên đầu bàn phím trong IOS?

nhập mô tả hình ảnh ở đây

enter image description here

tôi muốn đạt được một cái gì đó tương tự như trên bàn phím

+0

Bạn có thể sử dụng UIToolbar! – Jaimish

+0

tạo chế độ xem tùy chỉnh rồi hiển thị nó trong phương thức thông báo 'keyboardOnScreen' của bạn ... nó đi kèm với chiều cao bàn phím để bạn biết vị trí đặt thanh – Tj3n

+0

Cách sử dụng với thanh công cụ – Techiee

Trả lời

14

Hope trợ giúp này :)

UIToolbar* keyboardToolbar = [[UIToolbar alloc] init]; 
[keyboardToolbar sizeToFit]; 
UIBarButtonItem *flexBarButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
            target:nil action:nil]; 
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
            target:self action:@selector(yourTextViewDoneButtonPressed)]; 
keyboardToolbar.items = @[flexBarButton, doneBarButton]; 
self.yourTextView.inputAccessoryView = keyboardToolbar; 

và sau đó thêm phương pháp yourTextViewDoneButtonPressed

-(void)yourTextViewDoneButtonPressed 
{ 
    [self.yourTextView resignFirstResponder]; 
} 
+0

Cách ẩn bàn phím? – Techiee

+0

@deepakkumar Ý của bạn là gì? nếu bạn muốn ẩn bàn phím, chỉ cần gọi phương thức [self.yourTextView resignFirstResponder]; –

+0

Nếu bàn phím bị ẩn thì thanh công cụ không bị ẩn. Vui lòng cho biết cách thực hiện? – Techiee

17

Swift 3:

func setDoneOnKeyboard() { 
    let keyboardToolbar = UIToolbar() 
    keyboardToolbar.sizeToFit() 
    let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) 
    let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(InsertStatusVC.dismissKeyboard)) 
    keyboardToolbar.items = [flexBarButton, doneBarButton] 
    self.fullNameTextField.inputAccessoryView = keyboardToolbar 
} 

@objc func dismissKeyboard() { 
    view.endEditing(true) 
} 
11

Nó có thể được thực hiện bằng kịch bản:

  1. Thêm UITextField để UIViewController xem.
  2. Thêm UIToolbar ở cấp đầu tiên của UIViewController
  3. Thêm UIBarButtonItem vào thanh công cụ UIToolbar.
  4. Kết nối UItoolbar với mã bằng IBOutlet.
  5. Kết nối UIBarButtonItem với mã bằng IBAction (như didClick).
  6. Đặt UITextField sẽ được ủy quyền cho UIViewController.
  7. Trong didClick chỉnh sửa chức năng kết thúc (view.endEditing (true))
  8. Trong chức năng đại biểu textFieldShouldBeginEditing nên là: textField.inputAccessoryView = toolbar và trả đúng.

enter image description here

+0

Điều này là tuyệt vời tuy nhiên tôi đang cố gắng như vậy cho UITextView? Những gì cần phải khác nhau. Tôi đã chỉnh sửa những gì tôi nghĩ nhưng không thể chỉ định giá trị của loại UIButtonBarItem! để nhập UIView – adamprocter

+1

@adamprocter Bạn nên gán thanh công cụ cho textView.inputAccessoryView, nhưng không phải UIButtonBarItem. – Ramis

0

Câu trả lời từ Ramis cho phép người xem phụ kiện bàn phím được tạo ra bằng cách sử dụng Storyboard là một chiến lược tuyệt vời. Đó là năm 2017 sau khi tất cả! (Xin lỗi, nhưng tôi không có đủ điểm để upvote bạn.)

Hãy để tôi thêm một chút vào câu trả lời (để giữ trong các quy tắc SO). Tôi có một cái nhìn với nhiều textFields. Sau khi thực hiện từng bước của Ramis, tôi đính kèm accessoryView vào tất cả các textFields theo cách này:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
_activeTextField = textField; 
[_activeTextField setInputAccessoryView:_iboKeyboardTools]; 
} 

Dễ dàng so với việc thực hiện tất cả mã này! Chỉ cần xây dựng chế độ xem phụ kiện trong Storyboard- và đính kèm nó một lần nữa và một lần nữa!

1

Thêm UIToolBar làm chế độ xem tùy chỉnh sẽ có UIBarButtonItem làm nút Xong trong đó.

Đây là cách an toàn hơn và sạch hơn để thêm nút Xong vào bất kỳ loại bàn phím nào. Tạo UIToolBar thêm nút Done vào nó và thiết lập inputAccessoryView của bất kỳ UITextField hoặc UITextView nào. ]; }

SWIFT 3

var ViewForDoneButtonOnKeyboard = UIToolbar() 
ViewForDoneButtonOnKeyboard.sizeToFit() 
var btnDoneOnKeyboard = UIBarButtonItem(title: "Done", style: .bordered, target: self, action: #selector(self.doneBtnFromKeyboardClicked)) 
ViewForDoneButtonOnKeyboard.items = [btnDoneOnKeyboard] 
myTextField.inputAccessoryView = ViewForDoneButtonOnKeyboard 

Chức năng

@IBAction func doneBtnfromKeyboardClicked (sender: Any) { 
    print("Done Button Clicked.") 
    //Hide Keyboard by endEditing or Anything you want. 
    self.view.endEditing(true) 
    } 
Các vấn đề liên quan