如何在键盘上方添加工具栏?

Sus*_*rma 68 uitextfield uitoolbar ios

我已经以UIToolBar编程方式创建了一个并UITextField在其上添加了一个.现在,当我点击另一个文本字段时,我需要将该工具栏放在键盘上方.

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0,400, 320, 60)];
[self.view addSubview:toolBar];

UITextField *txtView=[[UITextField alloc]initWithFrame:CGRectMake(0, 400, 260, 30)];
txtView.backgroundColor =[UIColor  grayColor];
txtView.placeholder=@"Address";
UIBarButtonItem *txtfieldItem=[[UIBarButtonItem alloc]initWithCustomView:txtView];
toolBar.items =[NSArray arrayWithObject:txtfieldItem];
Run Code Online (Sandbox Code Playgroud)

小智 121

UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
                               [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
                               [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                               [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                               nil];
[numberToolbar sizeToFit];
phonenumberTextField.inputAccessoryView = numberToolbar;
Run Code Online (Sandbox Code Playgroud)

要关闭键盘:

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

let numberToolbar = UIToolbar(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 50))
numberToolbar.barStyle = UIBarStyle.Default
numberToolbar.items = [
            UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelNumberPad"),
            UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil),
            UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneWithNumberPad")]
    numberToolbar.sizeToFit()
    phonenumberTextField.inputAccessoryView = numberToolbar
Run Code Online (Sandbox Code Playgroud)

Swift 4.2:

let numberToolbar = UIToolbar(frame:CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
numberToolbar.barStyle = .default
numberToolbar.items = [
UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelNumberPad)),
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneWithNumberPad))]
numberToolbar.sizeToFit()
phonenumberTextField.inputAccessoryView = numberToolbar

...

@objc func cancelNumberPad() {
    //Cancel with number pad
}
@objc func doneWithNumberPad() {
    //Done with number pad
}
Run Code Online (Sandbox Code Playgroud)

  • 你可以通过`UITextField.appearance()将它添加到所有文本字段.inputAccessoryView =/*你的工具栏设置代码*/` (4认同)
  • 或者可以使用像[here]这样的故事板来完成(http://stackoverflow.com/a/41546987/1151916) (2认同)

Bar*_*zyk 86

您不再需要在代码中执行此操作.

  1. 只需将UIView拖到当前场景的顶部栏并根据需要自定义即可.

在此输入图像描述

  1. 在代码中简单地IBOutlet为两者:toolbarViewtextView和连接.

    @IBOutlet private var toolbarView: UIView!
    @IBOutlet private var textView: UITextView!
    
    Run Code Online (Sandbox Code Playgroud)
  2. viewDidLoad设置您的toolbarView作为您的附件UItextView.

    override func viewDidLoad() {
        super.viewDidLoad()
    
        textView.inputAccessoryView = toolbarView
    }
    
    Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述 在此输入图像描述

  • 哇.多年来我一直在努力工作; 人们说故事板没用! (8认同)

Sun*_*kas 19

对于swift(1.2):

let numberToolbar = UIToolbar(frame: CGRectMake(0, 0, self.view.frame.size.width, 50))
numberToolbar.barStyle = UIBarStyle.Default

numberToolbar.items = [
    UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "keyboardCancelButtonTapped:"),
    UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil),
    UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "keyboardDoneButtonTapped:")]

numberToolbar.sizeToFit()
yourTextView.inputAccessoryView = numberToolbar
Run Code Online (Sandbox Code Playgroud)


Ani*_*sad 8

您可以使用此代码对我有用.

-(void)viewdidload
{
 UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
 [keyboardDoneButtonView sizeToFit]; 
 UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                        style:UIBarButtonItemStyleBordered target:self
                                                                  action:@selector(doneClicked:)];
  [keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]];
  textField.inputAccessoryView = keyboardDoneButtonView;
 }
-(void)doneClicked:(id)sender
{
NSLog(@"Done Clicked.");
[self.view endEditing:YES];
} 
Run Code Online (Sandbox Code Playgroud)


Ani*_*ese 6

您可以使用UITextFields inputAccessoryView属性

    txtField.inputAccessoryView = toolBar;
Run Code Online (Sandbox Code Playgroud)