更新:
我也尝试推行UITextViewDelegate委托,然后在我的控制器做:
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
[textView resignFirstResponder];
return YES;
}
我还设置文本视图的代表是自(控制器视图实例)。
点击完成按钮仍然只是插入新行:(
更新:
我迄今所做的。 我已经通过我的视图控制器实现的UITextFieldDelegate。
我已连接文本视图经由出口视图控制器。
然后,我做的:
self.myTextView.delegate = self;
和:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
但是,当我点击完成按钮,它只是增加了一个新的生产线。
所以,我有我的场景一个UITextView元素,当用户点击它,键盘出现,它可以进行编辑。
然而,我无法关闭键盘。
我如何添加完成按钮键盘,因此它可以被解雇?
Answer 1:
那很简单:)
[textField setReturnKeyType:UIReturnKeyDone];
解雇键盘落实<UITextFieldDelegate>
在类的协议,设置
textfield.delegate = self;
和使用
- (void)textFieldDidEndEditing:(UITextField *)textField {
[textField resignFirstResponder];
}
要么
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Answer 2:
进入你的故事板,选择您的文本字段和属性检查器下有,说“返回键” ......选择“完成”选项。
然后进入你的ViewController并添加:
- (IBAction)dismissKeyboard:(id)sender;
{
[textField becomeFirstResponder];
[textField resignFirstResponder];
}
然后回到你的文本字段,单击网点和链接“真的结束退出”,以dismissKeyboard行动。
Answer 3:
添加UIToolBar因为这将在它已经完成按钮的UIBarButtonItem自定义视图。
这是做按钮添加到键盘的任何类型更安全,更清洁的方式。 创建UIToolBar添加完成按钮,并设置任何的UITextField或UITextView中的inputAccessoryView。
UIToolbar *ViewForDoneButtonOnKeyboard = [[UIToolbar alloc] init];
[ViewForDoneButtonOnKeyboard sizeToFit];
UIBarButtonItem *btnDoneOnKeyboard = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered target:self
action:@selector(doneBtnFromKeyboardClicked:)];
[ViewForDoneButtonOnKeyboard setItems:[NSArray arrayWithObjects:btnDoneOnKeyboard, nil]];
myTextField.inputAccessoryView = ViewForDoneButtonOnKeyboard;
IBAction为对于完成按钮
- (IBAction)doneBtnFromKeyboardClicked:(id)sender
{
NSLog(@"Done Button Clicked.");
//Hide Keyboard by endEditing or Anything you want.
[self.view endEditing:YES];
}
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)
}
Answer 4:
斯威夫特版本:
在您的视图控制器:
textField.returnKeyType = UIReturnKeyType.Done
textField.delegate = self
您的视图控制器后
extension MyViewController: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Answer 5:
设置'Return Key'
的选项下的text field
中检查你的文本字段的选择。 然后右键单击文本字段,并同时按住CTRL
选择'Did End On Exit'
并拖动到你这个view controllers
文件。 这将创建一个IBAction
方法。 给这个方法的名称,然后输入以下值:
[textField becomeFirstResponder];
[textField resignFirstResponder];
你的方法应该是这样的:
- (IBAction)methodName:(id)sender;
{
[sender becomeFirstResponder];
[sender resignFirstResponder];
}
Answer 6:
好了,我也一直在努力与这个非常问题。 目前,我在访问一个UITableViewCell(通过标签)一个UITextView。 因为我使用的原型细胞像其他人建议我不能使用IBActions也不IBOutlets。 相反,我使用;
- (BOOL)的TextView:(UITextView的*)的TextView shouldChangeTextInRange:(NSRange)范围replacementText:(的NSString *)文本
那么这会在每次用户点击一个按钮时为我提供的文本。 然后我的解决办法,是让新行的ASCII字符; “/ n” 个。 如果是已输入的文字,我会辞职的第一响应。 例如;
// If the text length is 0 then the user is deleting something, so only check the ascii character if there is text to check if (text.length != 0) { // Get the Ascii character int asciiCode = [text characterAtIndex:0]; // If the ascii code is /n or new line, then resign first responder if (asciiCode == 10) { [alertTextView resignFirstResponder]; [DeviceTextView resignFirstResponder]; } }
不知道是否有人会需要这个哈克解决方案,但我想我会放在那里万一有人需要它!
Answer 7:
这是添加键盘上完成按钮最佳途径
textField.returnKeyType = UIReturnKeyDone;
Answer 8:
以下是我的做法, Swift 3
。 当doneBtn
点击,让它发送.editingDidEndOnExit
事件。 我用这个事件来处理多个文本框之间的焦点问题。
// My customized UITextField
class MyTextField: UITextField {
override func awakeFromNib() {
super.awakeFromNib()
// Add toolBar when keyboardType in this set.
let set : [UIKeyboardType] = [.numberPad, .phonePad]
if (set.contains(self.keyboardType) ) {
self.addDoneToolbar()
}
}
// Add a toolbar with a `Done` button
func addDoneToolbar() {
let toolbar = UIToolbar()
let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(onToolBarDone))
toolbar.items = [space, doneBtn]
toolbar.sizeToFit()
self.inputAccessoryView = toolbar
}
@objc func onToolBarDone() {
// I use `editingDidEndOnExit` to simulate the `Done` behavior
// on the original keyboard.
self.sendActions(for: .editingDidEndOnExit)
}
}
Answer 9:
在Interface Builder上的TextView的属性可以设置返回按钮类型做。
然后,你需要检查时,返回按钮采用按压
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
检查文本==“/ N”然后辞职对你的TextView第一响应取消键盘。
文章来源: How to add Done button to the keyboard?