2011-03-03 101 views
4

当'完成'按下时,我想隐藏(resignFirstResponderUITextView的虚拟键盘。在UITextView的Theres没有'退出结束'。在UITextField我连接了'出口退出'与IBAction并呼吁resignFirstResponder方法。我如何用UITextView来做到这一点?'完成'按下时隐藏UITextView的虚拟键盘

回答

2

这里是“完成”的配件的雨燕版按钮:

@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() 
} 
4

我假设通过“完成”按钮您的意思是返回键。这不像你想象的那么直观。 This question覆盖得很好。

3

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

+0

我喜欢这个解决方案。在Xamarin.IOS中相当于 View.EndEditing(true); – 2015-10-15 13:56:56

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]; 

} 

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

3

确保您声明支持UITextViewDelegate协议。

@interface ...ViewController : UIViewController`in .h file。

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

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