UitTextview では、ユーザーが入力しているときにキーボードのリターン キーが改行キーのように動作するようにし、同じキーが数秒間非アクティブになった後に完了キーに変わり、改行を挿入する代わりにタッチするとキーボードを閉じるようにしたい
textview デリゲートを変更して、改行対却下のキーボード メカニズムを実行し、キーボードのリターン キーを UIReturnKeyDefault から UIReturnKeyDone に切り替え、改行対却下のメカニズムがうまく機能するようにしました。私が持っている唯一の問題は、リターンキーのタイプを self.TextView.returnKeyType = UIReturnKeyDone; に変更したときです。キーボードが更新/再描画されず、完了キーが表示されません。UITextView とメイン ビューで setNeedsDisplay を実行しようとしましたが、何も起こりません。キーボードのリターン キーは変わりません。キーボードが閉じられ、ユーザーがテキストビューを再入力したときに再び表示されると、完了キーがここにあります。
キーボードがアクティブで表示されている間に完了キーを再描画するにはどうすればよいですか?
私が使用した 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;
}
私はいたるところを見ましたが、キーボードが表示されているときにキーボードのキーを更新する方法に関する情報を見つけることができませんでした. 何か案は ?ご協力いただきありがとうございます