ユーザーが[完了]をタップしたときに、編集可能なUITextView
キーボード(resignFirstResponder
)を辞任しようとしています。 UITextField
を使用して、次のコードでこれを行うことができました。
- (IBAction)doneEditing:(id)sender {
[sender resignFirstResponder];
}
...次に、それをInterface Builderの関連するUITextField
のアクション「Did End on Exit」にアタッチします。
ただし、UITextView
を使用すると、「終了時に終了」アクションにアクセスできないようです。これを実現する方法について何か提案はありますか?
新しい回答
ビューには、以下のIBActionに接続されたUIBarButton( "Done")があります。
- (IBAction)doneEditing:(id)sender {
[textView resignFirstResponder];
}
ここで、textViewは、.hファイルで定義され、ストーリーボードまたは.xibファイルで接続されたtextViewアウトレットです。このような:
@property (retain, nonatomic) IBOutlet UITextView *textView;
古い回答
以下を確認してください。
受け入れられた答えは私にとってはうまくいきませんでした。代わりに、次のデリゲートメソッドを次のように呼び出す必要があります。
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]){
[textView resignFirstResponder];
return NO;
}else{
return YES;
}
}
これをUITextViewデリゲートとして割り当てるクラスに貼り付ければ、機能します。
Swift 4では、UITextViewDelegate
を実装して「\ n」を待つことができます。
myTextView.delegate = self
// ...
extension MyViewController : UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
textView.resignFirstResponder()
return false
}
return true
}
}