5

我想隐藏( )按下“完成”时resignFirstResponder的虚拟键盘。UITextView中没有“退出时结束” UITextView。在UITextField我用一个IBAction和调用resignFirstResponder方法连接“退出时结束”。我该怎么做UITextView

4

5 回答 5

7

处理此问题的正确方法是inputAccessoryViewUITextView. 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];

}

这应该会导致在键盘上方的标准工具栏中出现一个有效的“完成”按钮。

于 2013-07-31T16:14:07.560 回答
4

我假设“完成”按钮是指返回键。它并不像你想象的那么直观。这个问题很好地涵盖了它。

于 2011-03-03T00:57:45.623 回答
3

如果您希望能够使用返回键,可以将其添加到操作中 [[self view] endEditing: YES];

于 2013-03-25T16:32:33.997 回答
3

确保您声明支持该UITextViewDelegate协议。

@interface ...ViewController : UIViewController` 在 .h 文件中。

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

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }
于 2013-08-02T10:14:12.363 回答
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()
}
于 2015-12-09T05:10:55.927 回答