2015-12-14 225 views
8

我想添加Done按鈕在iOS右邊的鍵盤上的一個textView.Please告訴我,我怎麼能做到這一點?如何在IOS中的鍵盤頂部的鍵盤上添加完成按鈕?

進入這裏

enter image description here

我要實現類似上述鍵盤

+0

您可以使用UIToolbar! – Jaimish

+0

創建一個自定義視圖,然後在你的'keyboardOnScreen'通知方法中顯示它...它帶有鍵盤高度太所以你知道在哪裏放置吧 – Tj3n

+0

如何使用工具欄 – Techiee

回答

14

希望這有助於:)

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; 

,然後添加一些圖片說明yourTextViewDoneButtonPressed方法

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

如何隱藏鍵盤的使用方法? – Techiee

+0

@deepakkumar你是什麼意思?如果你想隱藏鍵盤,只需調用一個方法[self.yourTextView resignFirstResponder]; –

+0

如果鍵盤被隱藏,那麼工具欄不是hidden.please告訴如何做? – Techiee

17

斯威夫特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

它可以利用故事板來完成:

  1. 添加到的UITextField視圖的UIViewController。
  2. 在UIViewController的第一級添加UIToolbar
  3. 將UIBarButtonItem添加到UIToolbar。
  4. 使用IBOutlet將UItoolbar連接到代碼。
  5. 使用IBAction將UIBarButtonItem連接到代碼(如didClick)。
  6. 使UITextField將委託給UIViewController。
  7. 在didClick功能結束編輯(view.endEditing(真)
  8. 在委託功能textFieldShouldBeginEditing應該是:textField.inputAccessoryView =工具欄並返回

enter image description here

+0

這是偉大的,但我想同樣的UITextView?什麼需要有所不同。我編輯了我以爲但得到的東西無法分配UIButtonBarItem類型的值!鍵入UIView – adamprocter

+1

@adamprocter您應該將工具欄分配給textView.inputAccessoryView,而不是UIButtonBarItem。 – Ramis

0

從雷米斯答案,允許使用故事板創建鍵盤附件視圖是一個偉大的戰略。畢竟是2017年! (對不起,但我沒有足夠的積分來支持你。)

讓我加一點答案(保持在SO規則中)。我有一個與多個textFields的視圖。實現每個的雷米斯步驟後我附accessoryView的所有文本框的這樣:

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

與實施這一切的代碼相比,如此簡單!只需在Storyboard中構建配件視圖,然後重複附加即可!

1

將UIToolBar添加爲將具有UIBarButtonItem作爲完成按鈕的自定義視圖。

這是更安全和更乾淨的方式來添加完成按鈕到任何類型的鍵盤。創建UIToolBar添加完成按鈕,並設置任何UITextField或UITextView的inputAccessoryView。 ]; }

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 

功能

@IBAction func doneBtnfromKeyboardClicked (sender: Any) { 
    print("Done Button Clicked.") 
    //Hide Keyboard by endEditing or Anything you want. 
    self.view.endEditing(true) 
    } 
相關問題