I want to show keyboard when tap on button, but the case is that keyboard has accessory view and that is textfield. In short, I want to open keyboard with accessory view which is textfield. Which is right way to do it..?
I searched a lot, but none of those solutions helped me to achieve this. Please help me.
Here is my code :
ViewController.m
@interface ViewController () <UITextFieldDelegate>
{
UITextField *txtNote;
}
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *accView = [self createAccessoryView];
[txtNote setInputAccessoryView:accView];
}
- (UIView *)createAccessoryView
{
UIView *accessoryView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 45)];
[accessoryView setBackgroundColor:[UIColor lightGrayColor]];
[accessoryView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin];
CGFloat x = self.view.frame.size.width-65;
txtNote = [[UITextField alloc] initWithFrame:CGRectMake(0, 5, x-5, 35)];
txtNote.delegate = self;
txtNote.font = [UIFont systemFontOfSize:IS_IPAD?20.0:14.0];
[accessoryView addSubview:txtNote];
UIButton *btnSave = [UIButton buttonWithType:UIButtonTypeCustom];
btnSave.frame = CGRectMake(x, 5, 60, 35);
btnSave.layer.cornerRadius = 5.0f;
btnSave.clipsToBounds = TRUE;
btnSave.titleLabel.font = [UIFont systemFontOfSize:18.0f];
[btnSave setTitle:@"Save" forState:UIControlStateNormal];
[btnSave setBackgroundColor:[UIColor blackColor]];
[btnSave setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btnSave addTarget:self action:@selector(doneWithNumberPad:) forControlEvents:UIControlEventTouchUpInside];
[btnSave setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin];
[accessoryView addSubview:btnSave];
return accessoryView;
}
- (IBAction)addNote:(UIButton *)button
{
// On this click, I want to show keyboard.
[txtNote becomeFirstResponder];
}
- (IBAction)doneWithNumberPad:(id)sender
{
[txtNote resignFirstResponder];
}
答案 0 :(得分:0)
希望这会对你有所帮助..我点击按钮点击键盘上的配件视图:
#import "ViewController.h"
@interface ViewController ()<UITextFieldDelegate>{
UITextField *txtNote;
UIView *accessoryView ;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// call create accessoryview
[self createAccessoryView];
}
- (UIView *)createAccessoryView
{
accessoryView = [[UIView alloc]initWithFrame:CGRectMake(0, 100, 200, 45)];
[accessoryView setBackgroundColor:[UIColor lightGrayColor]];
accessoryView.userInteractionEnabled = YES;
//assign your dynamic frame values
txtNote = [[UITextField alloc] initWithFrame:CGRectMake(20, 5, 100, 35)];
txtNote.delegate = self;
txtNote.backgroundColor = [UIColor greenColor];
txtNote.userInteractionEnabled =YES;
txtNote.keyboardAppearance = UIKeyboardAppearanceDefault;
txtNote.font = [UIFont systemFontOfSize:IS_IPAD?20.0:14.0];
[accessoryView addSubview:txtNote];
UIButton *btnSave = [UIButton buttonWithType:UIButtonTypeCustom];
btnSave.frame = CGRectMake(200, 5, 60, 35);
btnSave.layer.cornerRadius = 5.0f;
// btnSave.clipsToBounds = TRUE;
btnSave.titleLabel.font = [UIFont systemFontOfSize:18.0f];
[btnSave setTitle:@"Save" forState:UIControlStateNormal];
[btnSave setBackgroundColor:[UIColor blackColor]];
[btnSave setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btnSave addTarget:self action:@selector(doneWithNumberPad:) forControlEvents:UIControlEventTouchUpInside];
[btnSave setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin];
[accessoryView addSubview:btnSave];
return accessoryView;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
NSLog(@"begin");
return YES;
}
//Call the accessory view with keyboard with button action
-(IBAction)addBu:(id)sender{
[txtNote becomeFirstResponder];
[self.view addSubview:accessoryView];
}
答案 1 :(得分:0)
你的
CGFloat x = self.view.frame.size.width-65;
txtNote = [[UITextField alloc] initWithFrame:CGRectMake(0, 5, x-5, 35)];
txtNote.delegate = self;
txtNote.font = [UIFont systemFontOfSize:IS_IPAD?20.0:14.0];
[accessoryView addSubview:txtNote];
应该是
CGFloat x = self.view.frame.size.width-65;
txtNote = [[UITextField alloc] initWithFrame:CGRectMake(0, 5, x-5, 35)];
txtNote.delegate = self;
txtNote.font = [UIFont systemFontOfSize:IS_IPAD?20.0:14.0];
[self.view addSubview:txtNote];