在 UitTextview 中,我希望键盘返回键在用户键入时像换行键一样操作,并且我希望相同的键在几秒钟不活动后变为完成键,并在触摸时关闭键盘而不是插入换行符
我已经修改了 textview 代表来执行换行与解除键盘机制,并将键盘返回键从 UIReturnKeyDefault 切换到 UIReturnKeyDone 并且换行与解除机制效果很好。我唯一的问题是,当我将返回键类型更改为 self.TextView.returnKeyType = UIReturnKeyDone; 键盘没有刷新/重绘,我看不到完成键。我试过在 UITextView 和我的主视图上做一个 setNeedsDisplay,但什么也没发生。键盘返回键不变。当键盘被关闭然后当用户重新进入 textview 时重新出现时,完成键就在这里。
我应该怎么做才能在键盘处于活动状态并显示时重绘完成键?
这是我使用的 uitextview 代表:
- (void)textViewDidBeginEditing:(UITextView *)textView
{
text_newline_mode=YES;
self.TextView.returnKeyType = UIReturnKeyDefault;
}
- (void)textViewDidChange:(UITextView *)txtView
{
text_newline_mode=YES;
self.TextView.returnKeyType = UIReturnKeyDefault;
if (keyboard_timer)
[keyboard_timer invalidate]; // cancel previous timer when user continue typing
keyboard_timer = [NSTimer scheduledTimerWithTimeInterval:3.0
target:self
selector:@selector(enableKeyboardDoneKey:)
userInfo:nil
repeats:NO];
}
-(void)enableKeyboardDoneKey:(NSTimer *)timer
{
text_newline_mode=NO;
keyboard_timer = nil;
self.TextView.returnKeyType = UIReturnKeyDone;
[self.TextView setNeedsDisplay]; // this does not refresh the keyboard
[self.view setNeedsDisplay]; //this does not help neither
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
if (text_newline_mode==YES)
{
self.TextView.text = [self.TextView.text stringByAppendingString:@"\n"];
return NO;
}
else return YES;
}
- (void)textViewDidEndEditing:(UITextView *)txtView
{
self.feedbackTextView.returnKeyType = UIReturnKeyDefault;
text_newline_mode=YES;
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if(([text isEqualToString:@"\n"]) && (text_newline_mode==NO))
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
我到处寻找,但找不到任何有关如何在显示键盘时刷新键盘键的信息。有任何想法吗 ?感谢您的帮助