Câu trả lời:
Trước tiên, bạn cần tuân theo UITextFieldDelegate
Giao thức trong tệp tiêu đề của View / ViewController như sau:
@interface YourViewController : UIViewController <UITextFieldDelegate>
Sau đó, trong tệp .m của bạn, bạn cần triển khai UITextFieldDelegate
phương thức giao thức sau :
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
đảm bảo bàn phím bị loại bỏ.
Đảm bảo rằng bạn đang đặt chế độ xem / bộ điều khiển chế độ xem của mình làm đại biểu của UITextField sau khi bạn nhập trường văn bản vào .m:
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
Triển khai phương thức UITextFieldDelegate như sau:
- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
Xem Quản lý Bàn phím để có một cuộc thảo luận đầy đủ về chủ đề này.
UITextFields của bạn phải có một đối tượng ủy quyền (UITextFieldDelegate). Sử dụng mã sau trong đại diện của bạn để làm cho bàn phím biến mất:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
}
Nên làm việc cho đến nay ...
Đã làm cho tôi vài thử nghiệm, có cùng một vấn đề, điều này đã làm việc cho tôi:
Kiểm tra chính tả của bạn tại -
(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
Tôi đã sửa thành textField
thay vì textfield
viết hoa "F" ... và chơi lô tô !! nó đã làm việc..
Khi nhấn phím quay lại, hãy gọi:
[uitextfield resignFirstResponder];
Sau khá nhiều thời gian tìm kiếm thứ gì đó có ý nghĩa, đây là những gì tôi đã tổng hợp lại và nó hoạt động như một cái duyên.
.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
.m
//
// 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
Hi vọng điêu nay co ich!
Đặt Người đại diện của UITextField thành ViewController của bạn, thêm một lối ra tham chiếu giữa Chủ sở hữu tệp và UITextField, sau đó triển khai phương pháp này:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
Thêm lớp này thay vì lớp được xác định trước
class ViewController: UIViewController, UITextFieldDelegate {
Cách xóa bàn phím khi nhấp vào bên ngoài bàn phím
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
và để xóa bàn phím khi nhấn enter
thêm dòng này trong viewDidLoad ()
inputField là tên của textField được sử dụng.
self.inputField.delegate = self
và thêm chức năng này
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Swift 2:
đây là những gì đã làm để làm mọi thứ!
bàn phím chặt chẽ với Done
nút hoặc Touch outSide
, Next
cho đi để đầu vào tiếp theo.
Đầu tiên Change TextFiled Return Key
Để Next
trong kịch bản này.
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)
}
Trong thời gian nhanh chóng, bạn nên ủy quyền UITextfieldDelegate , điều quan trọng là đừng quên nó, trong viewController, như:
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
Bạn có thể thêm một IBAction vào uiTextField (sự kiện xuống hạng là "Did End On Exit") và IBAction có thể được đặt tên là hideKeyboard,
-(IBAction)hideKeyboard:(id)sender
{
[uitextfield resignFirstResponder];
}
Ngoài ra, bạn có thể áp dụng nó cho các Trường văn bản hoặc các nút khác, ví dụ: bạn có thể thêm một nút ẩn vào dạng xem, khi bạn bấm vào nó để ẩn bàn phím.
Bạn có thể thử lớp con UITextfield này mà bạn có thể đặt điều kiện cho văn bản để thay đổi động UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField