inputAccessoryView 出现键盘时不调用
Posted
技术标签:
【中文标题】inputAccessoryView 出现键盘时不调用【英文标题】:inputAccessoryView Not calling when keyboard appearing 【发布时间】:2015-05-11 09:38:05 【问题描述】:我已将InputAccessoryView
添加到我的键盘消失。它炒得很好。但在某些ViewController
中它没有出现。即使那个方法也不会调用。
我有一个按钮。当我点击我的文本字段时,它会自动成为第一响应者。 (单击该按钮时光标聚焦在文本字段上)键盘来了,但输入附件视图没有来。
我正在 ios 8.2 设备上对此进行测试。 这是我的代码
在viewDidload
// for search------------------
UIView *srchPadView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)];
[srchtextbox setLeftView:srchPadView];
[srchtextbox setLeftViewMode:UITextFieldViewModeAlways];
srchtextbox.attributedPlaceholder=[[NSAttributedString alloc] initWithString:alertStrings.strSearch attributes:@NSForegroundColorAttributeName: [UIColor colorWithRed:1 green:1 blue:1 alpha:0.6]];
[srchtextbox setTextColor:[UIColor whiteColor]];
srchtextbox.delegate=self;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(textFieldTextDidChangeOneCI:)
name:UITextFieldTextDidChangeNotification
object:srchtextbox];
在文本字段中更改方法
-(void)textFieldTextDidChangeOneCI:(NSNotification *)notification
isSearching=YES;
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(getSongs)
object:nil];
loading=YES;
[mainactivityindicator startAnimating];
songsArray=[[NSMutableArray alloc]init];
songstable.hidden=YES;
startRec=0;
[self performSelectorInBackground:@selector(getSongs) withObject:nil];
然后
- (UIView *)inputAccessoryView
if (!inputAccessoryView)
CGRect accessFrame = CGRectMake(0.0, 0.0, 320, 40);
inputAccessoryView = [[UIView alloc] initWithFrame:accessFrame];
inputAccessoryView.backgroundColor = [UIColor colorWithRed:70.0/255 green:70.0/255.0 blue:70.0/255.0 alpha:0.9];
UIView *line=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 1)];
[line setBackgroundColor:[UIColor colorWithRed:134.0/255.0 green:139.0/255.0 blue:143.0/255.0 alpha:1.0]];
[inputAccessoryView addSubview:line];
UIButton *compButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
compButton.frame = CGRectMake(260.0, 2, 60, 37.0);
[compButton.titleLabel setTextAlignment:NSTextAlignmentCenter];
[compButton setTitle: @"Done" forState:UIControlStateNormal];
[compButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[compButton addTarget:self action:@selector(completeCurrentWord:)
forControlEvents:UIControlEventTouchUpInside];
[inputAccessoryView addSubview:compButton];
return inputAccessoryView;
终于
-(IBAction)completeCurrentWord:(id)sender
[self.view endEditing:YES];
但我的inputAccessoryView
从不打电话。这是为什么。我怎么解决这个问题?请帮帮我。
谢谢
【问题讨论】:
你在哪里调用你的函数- (UIView *)inputAccessoryView
?
【参考方案1】:
你需要
-
覆盖方法
inputAccessoryView
并返回您的视图。
覆盖方法:
-(BOOL)canBecomeFirstResponder
return YES;
3.当您需要输入附件视图可见时,请致电[self becomeFirstResponder];
提示: 如果你想一直显示
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[self becomeFirstResponder];
【讨论】:
另外,在viewWillDisappear:
中调用[self resignFirstResponder];
以动画方式将其关闭:)以上是关于inputAccessoryView 出现键盘时不调用的主要内容,如果未能解决你的问题,请参考以下文章
InputAccessoryView 使用键盘交互显示/隐藏上下移动表格视图
优雅地将 UIView 移动到键盘的 inputAccessoryView
旋转后Swift inputAccessoryView未附加到键盘