“完成”按下时隐藏UITextView的虚拟键盘

时间:2011-03-03 00:13:32

标签: ios iphone iphone-sdk-3.0 uitextview iphone-softkeyboard

我想在“完成”按下时隐藏resignFirstResponder虚拟键盘UITextViewUITextView中没有'退出时结束'。在UITextField我将'退出时结束'与IBAction相关联并调用resignFirstResponder方法。如何使用UITextView

执行此操作

5 个答案:

答案 0 :(得分:7)

处理此问题的正确方法是在inputAccessoryView中向UITextView添加完成按钮。 inputAccessoryView有时会出现在键盘上方。

为了实现inputAccessoryView,只需添加此方法(或其变体)并在viewDidLoad中调用它。

- (void)addInputAccessoryViewForTextView:(UITextView *)textView{

//Create the toolbar for the inputAccessoryView
UIToolbar* toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[toolbar sizeToFit];
toolbar.barStyle = UIBarStyleBlackTranslucent;

//Add the done button and set its target:action: to call the method returnTextView:
toolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(returnTextView:)],
                       nil];

//Set the inputAccessoryView
[textView setInputAccessoryView:toolbar];

}

然后通过实施您使用resignFirstResponder调用的操作方法来按下按钮。

- (void) returnBreakdown:(UIButton *)sender{

[self.textView resignFirstResponder];

}

这会导致键盘上方标准工具栏中出现“完成”按钮。

答案 1 :(得分:4)

我假设通过“完成”按钮表示返回键。它并不像你想象的那么直观。 This question很好地涵盖了它。

答案 2 :(得分:3)

如果您希望能够使用返回键 [[self view] endEditing: YES];

,可以将其添加到操作中

答案 3 :(得分:3)

确保声明支持UITextViewDelegate协议。

.h文件中的

@interface ...ViewController : UIViewController`

在.m文件中,实现以下方法

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }

答案 4 :(得分:2)

以下是配件“完成”按钮的Swift版本:

@IBOutlet weak var textView: UITextView!

// In viewDidLoad()

    let toolbar = UIToolbar()
    toolbar.bounds = CGRectMake(0, 0, 320, 50)
    toolbar.sizeToFit()
    toolbar.barStyle = UIBarStyle.Default
    toolbar.items = [
        UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil),
        UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "handleDone:")
    ]

    self.textView.inputAccessoryView = toolbar

// -----------------

func handleDone(sender:UIButton) {
    self.textView.resignFirstResponder()
}