noo*_*obs 102 keyboard uitextfield ios
我创建了一个以UITextField编程方式创建UITextFieldviewController的属性.我需要通过屏幕上的返回和触摸来关闭键盘.我能够让屏幕触摸解除,但按下返回不起作用.
我已经看过如何使用故事板以及UITextField直接分配和初始化对象而不将其创建为属性.可以吗?
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (strong, atomic) UITextField *username;
@end
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
Nit*_*hel 257
简单的方法是将委托连接UITextField到self(self.mytestField.delegate = self)并在方法中textFieldShouldReturn使用解除键盘[textField resignFirstResponder];
另一种解除键盘的方法如下:
[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)
放在[self.view endEditing:YES];您要关闭键盘的位置(按钮事件,触摸事件等).
iPa*_*tel 29
添加如下的委托方法UITextField:
@interface MyController : UIViewController <UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)
然后设置你的textField.delegate = self;那个也添加两个委托方法UITextField
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return YES;
}
// It is important for you to hide the keyboard
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
小智 25
//通过触摸视图中的背景隐藏keyBoard
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*lva 21
只需在swift中使用它来解除键盘:
UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
UIApplication.shared.sendAction(#selector(UIResponder.resign??FirstResponder), to: nil, from: nil, for: nil)
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 15
SWIFT 4:
self.view.endEditing(true)
Run Code Online (Sandbox Code Playgroud)
要么
将文本字段的委托设置为当前viewcontroller,然后:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Run Code Online (Sandbox Code Playgroud)
Objective-C的:
[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)
要么
将文本字段的委托设置为当前viewcontroller,然后:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
小智 9
在App Delegate中,您可以编写
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.window endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
使用这种方式,你不能写太多的代码.
尝试了解第一响应者在iOS视图层次结构中的含义.当您触摸文本字段(或第一响应者)时(或以becomeFirstResponder编程方式将消息传递给它),它会显示键盘.因此,要将文本字段从第一个响应者中移除,您应该将消息传递resignFirstResponder给它.
[textField resignFirstResponder];
Run Code Online (Sandbox Code Playgroud)
要在返回按钮上隐藏键盘,您应该实现其委托方法textFieldShouldReturn:并传递resignFirstResponder消息.
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这是我在代码中使用的内容.它就像一个魅力!
在yourviewcontroller.h中添加:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
现在在.m文件中,将其添加到ViewDidLoad函数中:
- (void)viewDidLoad {
[super viewDidLoad];
//Keyboard stuff
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
}
Run Code Online (Sandbox Code Playgroud)
另外,在.m文件中添加此函数:
- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
对于UITextViewa 内的一组 s ViewController:
斯威夫特3.0
for view in view.subviews {
if view is UITextField {
view.resignFirstResponder()
}
}
Run Code Online (Sandbox Code Playgroud)
Objective-C
// hide keyboard before dismiss
for (UIView *view in [self.view subviews]) {
if ([view isKindOfClass:[UITextField class]]) {
// no need to cast
[view resignFirstResponder];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168586 次 |
| 最近记录: |