自创解决键盘最后退出的问题

以modal控制器为例:

正常情况下,如果键盘在界面显示时候,就dismiss当前控制器,那么控制器的view会先退出,键盘会比控制器的view延迟退出。

解决办法:

dismiss控制器的view之前,先退出键盘,再dismiss控制器的view

[self.view endEditing:YES];

[self dismissViewControllerAnimated:YES completion:nil];

以上两行代码虽然解决了问题,但是会发现控制器的view被dismiss的时候,离开界面的动画执行比之前更快-闪退。为了解决控制器的view快速闪退的问题。

更好的办法:

// 先退出键盘,延迟0.2秒后 再dismiss控制器
    [self.view endEditing:YES];
   
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
       
        [self dismissViewControllerAnimated:YES completion:nil];

});

时间: 2024-10-14 20:23:33

自创解决键盘最后退出的问题的相关文章

全局异步和主线程异步区别、改变PlaceHolder颜色、解决键盘弹起挡住文本框问题

1.全局异步执行耗时任务 dispatch_async(dispatch_get_global_queue(0, 0), ^{ }); 2.主线程异步刷新UI dispatch_async(dispatch_get_main_queue(), ^{ }); 3.改变PlaceHolder的颜色 [username_text setValue:[UIColor colorWithRed:1 green:1 blue:1 alpha:0.5] forKeyPath:@"_placeholderLab

『零行代码』解决键盘遮挡问题(iOS)

关注仓库,及时获得更新:iOS-Source-Code-Analyze https://github.com/draveness/iOS-Source-Code-Analyze Follow: Draveness · Github 这篇文章会对 IQKeyboardManager 自动解决键盘遮挡问题的方法进行分析. 最近在项目中使用了 IQKeyboardManager 来解决 UITextField 被键盘遮挡的问题,这个框架的使用方法可以说精简到了极致,只需要将 IQKeyboardMan

学习制作iOS程序第三天:创建全局变量,预编译函数等、优化TabBarController、加入Bugly崩溃日志、解决键盘覆盖文本框的问题

十一:创建Define定义文件和pch预处理文件 1.在Define目录里创建Const.h文件,用于保存一些常用的宏命令 #define CURRENT_APPID @"" #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define IS_

解决键盘挡住输入框的问题

我们在开发Android应用中,登录和注册界面是少不了的,往往在做登录注册的时候如果给界面加一个LOGO,就 有可能把用户名和密码框放在手机屏幕的中间或底部,这样当软键盘弹出的时候,就有可能挡住输入框(往往用户输完用户名和密码还要按返回键盘才能登录),这 样用户体验是不好的,我曾今也为这种事情很头疼.首先说一下我原来想到过的解决办法: 一.原来想到过的解决办法: (1).把登录和输入框让美工做在顶部,不要用LOGO图片类似于淘宝客户端(如下图):这样键盘弹出就不会影响到输入框,但是这样始终不是解

隐藏虚拟键盘,解决键盘挡住UITextField问题

再正式开始之前,先来介绍一下IOS的键盘类型: 一.键盘风格 UIKit框架支持8种风格键盘 ? 1 2 3 4 5 6 7 8 9 10 typedef enum {      UIKeyboardTypeDefault,                // 默认键盘:支持所有字符       UIKeyboardTypeASCIICapable,           // 支持ASCII的默认键盘       UIKeyboardTypeNumbersAndPunctuation,  //

分享:完美解决DiscuzX2登录退出不同步帝国CMS6.6

打开帝国系统/e/config.inc.php的文件,更改dz的cookie域, //同步登录 Cookie 设置 $cookiedomain = 'http://dz.com';    // cookie 作用域  (我本地安装的dz程序访问路径) $cookiepath = 'http://dz.com/';     // cookie 作用路径 (我本地安装的dz程序访问路径) 然后尝试了一下,在帝国程序登录时,刷新dz程序,可以同步登录,这时小涛暗喜,终于设置成功了,不过小涛考虑不周又遇

快速解决键盘遮挡问题

自适应键盘出现后View的高度调整,防止遮挡输入框 1.首先在LoginViewController中实现UITextField的一个Delegate //  Created by ken on 13-7-21. //  Copyright (c) 2013年 ken. All rights reserved. // #import <UIKit/UIKit.h> @interface LoginViewController : UIViewController<UITextFieldD

键盘的出现于隐藏(解决键盘弹出时会覆盖文本框的问题,代码实现)

#import "ViewController.h" #import "UIView+FrameExtension.h" // 可以自己写,以后用着方便 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super v

解决键盘遮挡输入框的问题

1)首先得遵守协议UITextFieldDelegate @interface userInfoViewController()<UITextFieldDelegate> 2)设置代理(下面的self都是输入框所在的父view) textField.delegate = self; 3)实现UITextFieldDelegate的三个方法即可: - (BOOL)textFieldShouldReturn:(UITextField *)textField {     [textField res