답변:
먼저 다음 UITextFieldDelegate
과 같이 View / ViewController의 헤더 파일에서 프로토콜 을 준수해야합니다 .
@interface YourViewController : UIViewController <UITextFieldDelegate>
그런 다음 .m 파일에서 다음 UITextFieldDelegate
프로토콜 메서드 를 구현해야합니다 .
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
키보드가 해제되었는지 확인합니다.
.m에서 텍스트 필드를 초기화 한 후 뷰 / 뷰 컨트롤러를 UITextField의 델리게이트로 설정했는지 확인하십시오.
yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField's properties
//....
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
UITextFields에는 위임 객체 (UITextFieldDelegate)가 있어야합니다. 대리자에서 다음 코드를 사용하여 키보드를 사라지게합니다.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
}
지금까지 작동해야합니다 ...
말이되는 것을 찾아 내는데 꽤 많은 시간을 보낸 후, 이것이 제가 모아 놓은 것이고 그것은 매력처럼 작동했습니다.
.h
//
// ViewController.h
// demoKeyboardScrolling
//
// Created by Chris Cantley on 11/14/13.
// Copyright (c) 2013 Chris Cantley. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
// Connect your text field to this the below property.
@property (weak, nonatomic) IBOutlet UITextField *theTextField;
@end
.미디엄
//
// ViewController.m
// demoKeyboardScrolling
//
// Created by Chris Cantley on 11/14/13.
// Copyright (c) 2013 Chris Cantley. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// _theTextField is the name of the parameter designated in the .h file.
_theTextField.returnKeyType = UIReturnKeyDone;
[_theTextField setDelegate:self];
}
// This part is more dynamic as it closes the keyboard regardless of what text field
// is being used when pressing return.
// You might want to control every single text field separately but that isn't
// what this code do.
-(void)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
}
@end
도움이 되었기를 바랍니다!
UITextField의 Delegate를 ViewController로 설정하고 파일의 소유자와 UITextField 사이에 참조 아웃렛을 추가 한 다음이 메서드를 구현합니다.
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
미리 정의 된 클래스 대신 이것을 추가하십시오.
class ViewController: UIViewController, UITextFieldDelegate {
키보드 바깥 쪽을 클릭 할 때 키보드를 제거하려면
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
Enter 키를 눌렀을 때 키보드를 제거하려면
viewDidLoad ()에이 줄을 추가합니다.
inputField는 사용 된 textField의 이름입니다.
self.inputField.delegate = self
이 기능을 추가하십시오
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
스위프트 2 :
이것은 모든 일을하기 위해 한 일입니다!
가까운 키보드 Done
버튼을 누르거나 Touch outSide
, Next
다음 입력으로 이동합니다.
먼저 StoryBoard에서 TextFiled Return Key
를 다음 Next
으로 변경 합니다.
override func viewDidLoad() {
txtBillIdentifier.delegate = self
txtBillIdentifier.tag = 1
txtPayIdentifier.delegate = self
txtPayIdentifier.tag = 2
let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture")
self.view.addGestureRecognizer(tap)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if(textField.returnKeyType == UIReturnKeyType.Default) {
if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField {
next.becomeFirstResponder()
return false
}
}
textField.resignFirstResponder()
return false
}
func onTouchGesture(){
self.view.endEditing(true)
}
신속하게 UITextfieldDelegate 를 위임 해야 합니다. 중요한 것은 viewController에서 다음과 같이 잊지 마세요.
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
텍스트가 UIReturnKey를 동적으로 변경하도록 조건을 설정할 수있는이 UITextfield 하위 클래스를 시도해 볼 수 있습니다.
https://github.com/codeinteractiveapps/OBReturnKeyTextField