UIResponder

响应链

控件响应触控时间的时候后,是有先后顺序的,那么这个顺序就形成了一个响应者链。

第一响应通常是用户当前正在交互的对象。

以下为响应者链图:


第一响应者就是响应链的开始

如果第一响应者不处理某个事件,则该时间传递到响应者链的下一级,一般情况下如果下一级处理,则停止事件的传递

如果事件通过整个响应者链并且没有对象处理该事件,则丢弃该事件


说明:第一响应者几乎都是视图控件,并且首先对事件进行响应;

如果第一响应者不处理,则传递给其视图控制器,如果仍不处理则传递给第一响应者的父视图;

如果父视图没有处理,则转到父视图的控制器;

如果一直传递下去而没有环节去处理,则一直传递到应用程序的窗口;

如果窗口不处理,则将传递给应用程序委托,如果应用程序委托不是UIResponder子类或不处理,则该事件丢弃

如果时间通过整个响应者链并且没有对象处理该事件,则该事件丢弃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 iOS 中,可以通过监听键盘弹出事件来实现禁止页面整体被顶上去的功能。具体实现如下: 1. 注册键盘弹出和隐藏的通知,可以在viewDidLoad方法中添加以下代码: ``` NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil) ``` 2. 在键盘弹出和隐藏的方法中,根据键盘的高度来调整页面的布局,可以在UIViewController中添加以下代码: ``` @objc func keyboardWillShow(_ notification: Notification) { if let userInfo = notification.userInfo, let keyboardFrame = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { let keyboardHeight = keyboardFrame.cgRectValue.height // 根据键盘的高度来调整页面的布局 // 比如可以将底部的按钮向上移动键盘的高度 // 这样页面整体就不会被顶上去了 } } @objc func keyboardWillHide(_ notification: Notification) { // 在键盘隐藏时,可以将页面恢复到原来的布局 } ``` 在这两个方法中,可以根据键盘的高度来调整页面的布局,比如将底部的按钮向上移动键盘的高度,这样页面整体就不会被顶上去了。 另外,需要注意的是,在UIViewController中要记得在deinit方法中移除通知的监听,可以添加以下代码: ``` deinit { NotificationCenter.default.removeObserver(self) } ``` 这样就可以实现在iOS中禁止页面整体被顶上去的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值