如何在键盘顶部添加视图?

时间:2012-10-04 06:38:47

标签: iphone objective-c ios cocoa-touch

我使用setInputAccessoryView在键盘顶部添加了一个带按钮的视图。 现在我想要的功能就像当我点击视图中的按钮时我想在键盘上显示 pickerView 。将 pickerView 添加为键盘子视图的方法。

我该怎么做?

5 个答案:

答案 0 :(得分:19)

在键盘顶部创建您想要的视图。您可以从xib或手动执行此操作,但我认为xib将是更好的选择。

然后通过执行此操作来引用此视图

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   textField.inputAccessoryView = YOURCustomView;
   return YES;
}

每当你想隐藏这个或删除它时,只需把这个

textField.inputAccessoryView = nil;

答案 1 :(得分:2)

self.pickerContainerView = [[UIView alloc] initWithFrame:CGRectMake(0, 194, 320, 224)];
    self.pickerContainerView.backgroundColor = [UIColor clearColor];
    [self.view addSubview:self.pickerContainerView];

    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    pickerToolbar.barStyle = UIBarStyleBlackTranslucent;
    [pickerToolbar sizeToFit];

    self.lblPickerViewTitle = [[UILabel alloc] initWithFrame:CGRectMake(15, 7, 230, 30)];
        self.lblPickerViewTitle.backgroundColor = [UIColor clearColor];
    [self.lblPickerViewTitle  setFont: [UIFont fontWithName:@"Arial-BoldMT" size:17]];
        self.lblPickerViewTitle.textAlignment = UITextAlignmentLeft;
        self.lblPickerViewTitle.textColor =[UIColor whiteColor];
    [pickerToolbar addSubview:self.lblPickerViewTitle];

    NSMutableArray *barItems = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [barItems addObject:flexSpace];
    [flexSpace release];

    UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(closePickerView:)];
    [barItems addObject:btnCancel];
    [btnCancel release];

    UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithTitle:@"ShowPicker" style:UIBarButtonItemStyleBordered target:self action:@selector(donePickerView:)];
    [barItems addObject:btnDone];
    [btnDone release];

    [pickerToolbar setItems:barItems animated:YES];
    [barItems release];
    [self.pickerContainerView addSubview:pickerToolbar];

ShowPicker 方法中,编写显示UIPicker的代码

答案 2 :(得分:1)

您需要先创建另一个UIWindow:

UIWindow *newWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0,100,320,20)];
newWindow.windowLevel = UIWindowLevelStatusBar; // this will make to place your WINDOW above the keyboard
[newWindow makeKeyAndVisible]; // show the new window

// [newWindow addSubview:yourView];

答案 3 :(得分:1)

像键盘上的添加按钮一样,你也可以添加如下的视图......

在这里,您可以找到键盘窗口,然后设置按钮框架以及您的视图,然后添加到键盘

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardDidShow:) 
                                                 name:UIKeyboardDidShowNotification 
                                               object:nil];
    return YES;
}
- (void)keyboardDidShow:(NSNotification *)note {
    UIButton *returnBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    returnBtn.frame = CGRectMake(0,-25,320,25);
    returnBtn.adjustsImageWhenHighlighted = NO;
    returnBtn.backgroundColor=[UIColor darkGrayColor];
    returnBtn.titleLabel.textColor=[UIColor whiteColor];
    [returnBtn setBackgroundImage:[UIImage imageNamed:@"keyBtn.png"] forState:UIControlStateNormal];

    [returnBtn addTarget:self action:@selector(keyboardBtn:) forControlEvents:UIControlEventTouchUpInside];
    // locate keyboard view
    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i=0; i<[tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        // keyboard found, add the button
        if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
            //  if (txtTag==5) {
            [keyboard addSubview:returnBtn];
    }
}
-(IBAction)keyboardBtn:(id)sender{
    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i=0; i<[tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        // keyboard found, add the button
        if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
            //  if (txtTag==5) {
            [keyboard addSubview:yourView];// here add your view with frame
    }
}

我希望这可以帮助你...

:)

答案 4 :(得分:0)

来自Jonas Schnelli的回答

var results = [String:[AnyObject]]() 
let jsonResult = try NSJSONSerialization.JSONObjectWithData(results, options:NSJSONReadingOptions.MutableContainers);

for (key, value) in jsonResult {
  print("key \(key) value2 \(value)")
}

只需将UIWindow *newWindow = [[UIWindow alloc]initWithFrame:CGRectMake(0,100,320,20)]; newWindow.windowLevel = CGFLOAT_MAX; // this will make to place your WINDOW above the keyboard [newWindow addSubview:yourView]; 更改为UIWindowLevelStatusBar即可。