2017-08-07 17:40:42 a1018875550 阅读数 2295

先上效果

效果图

用到的变量

 @IBOutlet weak var textView: UITextView!

 //MARK: 记录UITextView的原始高度
 var textViewHeight: CGFloat!

viewDidLoad

//获取原始位置
textViewHeight = textView.frame.origin.y

//注册监听
NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardDisShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)

handleKeyboardDisShow

 //MARK: 当键盘显示时
    func handleKeyboardDisShow(notification: NSNotification) {
        //得到键盘frame
        let userInfo: NSDictionary = notification.userInfo! as NSDictionary
        let value = userInfo.object(forKey: UIKeyboardFrameEndUserInfoKey)
        let keyboardRec = (value as AnyObject).cgRectValue

        let height = keyboardRec?.size.height

        //让textView bottom位置在键盘顶部
        UITextView.animate(withDuration: 0.1, animations: {
            var frame = self.textView.frame
            frame.origin.y = height!
            self.textView.frame = frame
        })

    }

textFieldShouldReturn

//MARK: 输入框enter回车事件
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        //让textView bottom位置还原
        UITextView.animate(withDuration: 0.1, animations: {
            var frame = self.textView.frame
            frame.origin.y = self.textViewHeight
            self.textView.frame = frame
        })
        return true
    }

注销监听

deinit {
        //移除监听
        NotificationCenter.default.removeObserver(self)
    }
2016-08-22 16:10:32 lincsdnnet 阅读数 579

对textView进行切换键盘

textView的inputView设置为nil则使用默认键盘


步骤

// 1.退出键盘
textView.resignFirstResponder()

// 2.切换键盘
textView.inputView = textView.inputView != nil ? nil : UISwitch()

// 3.弹出键盘
textView.becomeFirstResponder()


如图, 点击 表情按钮 后会将键盘切换为UISwitch控件,再点击一次就会改回默认键盘









2018-09-05 15:37:17 qq_37269542 阅读数 1223

在swift开发中我们往往会用到UITextField这个控件,当点击textfield的时候系统会自动弹出键盘,那么往往我们需要在点击空白或者别的地方的时候来让键盘关闭,那么如何实现呢,方法很简单,下面直接代码介绍关闭键盘的两种方法:

方法一:

           textField.resignFirstResponder()     //该方法是使其失去第一响应者的方法

方法二:

            self.view?.endEditing(true)      //该方法需要使用父视图中的view去结束编辑,如果在UIView中调用需要拿到其父视图控制器的view再去调用endEditing方法。

 

下面介绍的是点击空白处关闭键盘的方法:   

//点击空白处关闭键盘
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

        textFiled.resignFirstResponder() 
        //或者 self.view?.endEditing(true)

 }

 

2016-10-22 21:20:29 C_calary 阅读数 4603

1.注册/移除通知

 override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    }

 deinit {
  //移除通知
  NotificationCenter.default.removeObserver(self)
    }

2.实现通知中的方法

 //键盘的出现
    func keyBoardWillShow(_ notification: Notification){
        //获取userInfo
        let kbInfo = notification.userInfo
        //获取键盘的size
        let kbRect = (kbInfo?[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
        //键盘的y偏移量
        let changeY = kbRect.origin.y - SCREEN_HEIGHT
        //键盘弹出的时间
        let duration = kbInfo?[UIKeyboardAnimationDurationUserInfoKey] as! Double

       //界面偏移动画
        UIView.animate(withDuration: duration) {

            self.aTableView.transform = CGAffineTransform(translationX: 0, y: changeY)
        }
    }

    //键盘的隐藏
    func keyBoardWillHide(_ notification: Notification){

        let kbInfo = notification.userInfo
        let kbRect = (kbInfo?[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
        let changeY = kbRect.origin.y
        let duration = kbInfo?[UIKeyboardAnimationDurationUserInfoKey] as! Double

        UIView.animate(withDuration: duration) {
           self.tableViewConstraint.update(inset: 0)
        }
    }
2017-02-15 16:03:15 bitcser 阅读数 1412

WHC_KeyboardManager

iOS平台轻量级的键盘管理器,使用简单功能强大,键盘再也不会挡住输入控件 ,有Swift / OC版本

github地址:https://github.com/netyouli/WHC_KeyboardManager

点击打开链接

要求

  • iOS 6.0 or later
  • Xcode 8.0 or later

集成

  • 使用CocoaPods:
    • 【Objective-c】 pod 'WHC_KeyboardManager_oc', '~> 1.1.3'
    • 【Swift】 pod 'WHC_KeyboardManager', '~> 1.1.3'
  • 手工集成:
    • 【Objective-c】 导入文件夹WHC_KeyboardManager(OC)
    • 【Swift】 导入文件夹WHC_KeyboardManager

用法

  • 无配置演示
override func viewDidLoad() {
    super.viewDidLoad()
    /*******只需要在要处理键盘的界面创建WHC_KeyboardManager对象即可无需任何其他设置*******/
    WHC_KeyboardManager.share.addMonitorViewController(self)
}
  • 自定义配置演示
override func viewDidLoad() {
    super.viewDidLoad()
    /*******只需要在要处理键盘的界面创建WHC_KeyboardManager对象即可无需任何其他设置*******/
    let configuration = WHC_KeyboardManager.share.addMonitorViewController(self)
    /// 不要键盘头
    configuration.enableHeader = false

    /***configuration里面有丰富实用的自定义配置具体可参看代码***/
}

相关开源库:

YYKeyboardManager

github地址点击打开链接

swift3 键盘通知事件

博文 来自: csharp25

Swift 键盘动作监听

阅读数 686

没有更多推荐了,返回首页