Saya membuat secara UITextField
terprogram membuat UITextField
properti dari viewController. Saya perlu menutup keyboard dengan kembali dan sentuhan di layar. Saya bisa mendapatkan sentuhan layar untuk menutup, tetapi menekan kembali tidak berfungsi.
Saya telah melihat bagaimana melakukannya dengan storyboard dan dengan mengalokasikan dan menginisialisasi UITextField
objek secara langsung tanpa membuatnya sebagai properti. Bisa dilakukan?
.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (strong, atomic) UITextField *username;
@end
.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor blueColor];
self.username = [[UITextField alloc] initWithFrame:CGRectMake(100, 25, 80, 20)];
self.username.placeholder = @"Enter your username";
self.username.backgroundColor = [UIColor whiteColor];
self.username.borderStyle = UITextBorderStyleRoundedRect;
if (self.username.placeholder != nil) {
self.username.clearsOnBeginEditing = NO;
}
_username.delegate = self;
[self.view addSubview:self.username];
[_username resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan:withEvent:");
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}
@end
ios
keyboard
uitextfield
noobsmcgoobs
sumber
sumber
Jawaban:
Cara sederhana adalah menghubungkan delegasi
UITextField
ke self (self.mytestField.delegate = self
) dan menutup keyboard dalam metode yangtextFieldShouldReturn
menggunakan[textField resignFirstResponder];
Cara lain untuk menutup keyboard adalah sebagai berikut:
Letakkan di
[self.view endEditing:YES];
tempat Anda ingin menutup keyboard (Acara tombol, acara Touch, dll.).sumber
Tambahkan metode delegasi
UITextField
seperti ini:Dan atur
textField.delegate = self;
lalu tambahkan juga dua metode delegasiUITextField
sumber
@interface MyController : UIViewController <UITextFieldDelegate>
// Sembunyikan keyBoard dengan menyentuh latar belakang dalam tampilan
sumber
cukup gunakan ini dengan cepat untuk menutup keyboard:
Cepat 3
sumber
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
SWIFT 4:
atau
Setel delegasi bidang teks ke viewcontroller saat ini dan kemudian:
Objective-C:
atau
Setel delegasi bidang teks ke viewcontroller saat ini dan kemudian:
sumber
Di Delegasi Aplikasi, Anda dapat menulis
gunakan cara ini, Anda tidak dapat menulis terlalu banyak kode.
sumber
Cobalah untuk mendapatkan gambaran tentang apa itu responden pertama dalam hierarki tampilan iOS. Ketika textfield Anda menjadi aktif (atau first responder) ketika Anda menyentuh di dalamnya (atau menyebarkan pesan secara
becomeFirstResponder
terprogram), itu menampilkan keyboard. Jadi untuk menghapus textfield Anda dari menjadi responder pertama, Anda harus meneruskan pesanresignFirstResponder
ke sana.Dan untuk menyembunyikan keyboard pada tombol kembali, Anda harus mengimplementasikan metode delegasi
textFieldShouldReturn:
dan meneruskanresignFirstResponder
pesan.sumber
Inilah yang saya gunakan dalam kode saya. Ini bekerja seperti pesona!
Di yourviewcontroller.h tambahkan:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
Sekarang di file .m, tambahkan ini ke fungsi ViewDidLoad Anda:
Tambahkan juga fungsi ini di file .m:
sumber
Untuk menutup keyboard setelah keyboard muncul, ada 2 kasus ,
saat UITextField berada di dalam UIScrollView
saat UITextField berada di luar UIScrollView
2. saat UITextField berada di luar UIScrollView, ganti metode di subkelas UIViewController Anda
Anda juga harus menambahkan delegasi untuk semua UITextView
untuk membuat IBAction, tekan ctrl + klik UITapGesture dan seret ke file .h viewcontroller.
Di sini saya menamai tappedEvent sebagai nama tindakan saya
Informasi yang diberikan secara keseluruhan berasal dari tautan berikut, silakan lihat informasi lebih lanjut atau hubungi saya jika Anda tidak memahami datanya.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
sumber
Untuk sekelompok
UITextView
s di dalamViewController
:Swift 3.0.0
Objective-C
sumber
Saya tahu ini telah dijawab oleh orang lain, tetapi saya menemukan artikel lain yang membahas juga tanpa latar belakang acara - tampilan tabel atau tampilan gulir.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
sumber
Karena tag hanya mengatakan iOS saya akan memposting jawaban untuk Swift 1.2 dan iOs 8.4, tambahkan ini di kelas swift pengontrol tampilan Anda:
Juga jangan lupa untuk menambahkan UITextFieldDelegate di deklarasi kelas dan setel kolom teks Anda ke self (tampilan).
sumber
DI Swift 3
ATAU
sumber
Jadi, inilah yang saya lakukan untuk membuatnya ditutup setelah menyentuh latar belakang atau kembali. Saya harus menambahkan delegate = self di viewDidLoad dan kemudian juga metode delegasi nanti di file .m.
sumber
Cukup gunakan ini di Objective-C untuk menutup keyboard:
sumber
Pertama, Anda perlu menambahkan delegete textfield dalam file .h. jika tidak deklarasikan
(BOOL)textFieldShouldReturn:(UITextField *)textField
metode ini tidak dipanggil. jadi pertama-tama tambahkan delegasi dan tulis kode sembunyikan keyboard ke dalam metode itu.coba yang ini..
sumber
Tambahkan Delegasi: UITextFieldDelegate
dan kemudian tambahkan metode delegasi ini
// Ini seharusnya bekerja dengan sempurna
sumber
bila Anda menggunakan lebih dari satu bidang teks di layar Dengan metode ini Anda tidak perlu menyebutkan bidang teks setiap saat
sumber
Cepat 2:
inilah yang dilakukan untuk melakukan segala sesuatu!
tutup keyboard dengan
Done
tombol atauTouch outSide
,Next
untuk ke masukan berikutnya.Pertama Ubah TextFiled
Return Key
KeNext
di StoryBoard.sumber
Jika Anda tidak mengetahui pengontrol tampilan atau textview saat ini, Anda dapat menggunakan Rantai Responder:
sumber
untuk cepat 3-4 saya tetap suka
cukup salin tempel di mana saja di kelas. Solusi ini hanya berfungsi jika Anda ingin semua UItextfield berfungsi sama, atau jika Anda hanya memiliki satu!
sumber