好的,我已经筋疲力尽谷歌和这个网站寻找答案,找不到一个。我目前有一个UITextView(postMessage),它的键盘不会消失。我已经尝试了所有可能的代码组合,以使其解除,但它根本不会。
我试过做返回键方法
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]){
//MainViewController *mvc = [[MainViewController alloc] init];
//[mvc.view endEditing:YES];
//[[self view] endEditing: YES];
//[self.postMessage becomeFirstResponder];
//[self.topLayer endEditing:YES];
//[self.view endEditing:YES];
//[self.collectionView endEditing:YES];
//[self.postMessage.editable = NO];
//[postMessage resignFirstResponder];
[self.postMessage resignFirstResponder];
return NO;
}else{
return YES;
}
}
我也尝试过使用带UIBarButton的UIToolBar
-(IBAction)done:(id)sender {
[self keyboardIsHidden];
[[self view] endEditing: YES];
[self.postMessage becomeFirstResponder];
[self.topLayer endEditing:YES];
[self.view endEditing:YES];
[self.collectionView endEditing:YES];
//[self.postMessage.editable = NO];
[self.postMessage resignFirstResponder];
keyboardBar.hidden = YES;
NSLog(@"done");
}
没有.....我已经使用NSLog来确保调用这两种方法,但键盘不会辞职。我还使用和if语句来检查以确保UITextView(postMessage)是firstResponder并且它是。
在我的项目中,我有2个视图(不是视图控制器),底层视图和顶层。用户将顶层拉到视图中。我也有一个UICollectionView。
我注意到当我按下键盘上的返回键或UIToolBar上的“完成”键时,UICollectionView会重新加载数据。
我确实在.h上设置了UITextViewDelegate。 我的ViewDidLoad
中也有postMessage.delegate = self谢谢! -Mike
答案 0 :(得分:1)
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([string isEqualToString:@"\n"]) {
[textField resignFirstResponder];
return NO;
}
return YES;
}
我正在使用这项工作
答案 1 :(得分:0)
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
// Return FALSE so that the final '\n' character doesn't get added
return NO;
}
// For any other character return TRUE so that the text gets added to the view
return YES;
}
或创建一个按钮..
-(IBAction)btnclicked{
[txtvw resignFirstResponder];
}
答案 2 :(得分:0)
将TextField Delegate附加到文件所有者,清理构建并运行项目