Ben*_*ieb 15 iphone uimenucontroller
有没有办法确定UIMenuController何时被解雇?我有一个(不可编辑的)文本区域,我在菜单显示时突出显示,当他们选择一个项目(简单)或取消(不可能?)时,我想取消突出显示它.
Mar*_*fer 38
在状态更改时,UIMenuController会将通知发布到默认的NSNotification中心.您可以订阅它们以在系统隐藏菜单时收到通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willHideEditMenu:) name:UIMenuControllerWillHideMenuNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didHideEditMenu:) name:UIMenuControllerDidHideMenuNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
Wil*_*iss 10
基于@MarkusMüller的建议,这里有一个你可以复制的模式:
- (BOOL)becomeFirstResponder
{
// starts listening for UIMenuControllerDidHideMenuNotification & triggers resignFirstResponder if received
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignFirstResponder) name:UIMenuControllerDidHideMenuNotification object:nil];
return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIMenuControllerDidHideMenuNotification object:nil];
// your custom cleanup code here (e.g. deselection)
return [super resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
在我来说,我有上百个可选对象中,所以我不想让他们都遵守本通知所有的时间!这种模式在获得firstResponder时会开始观察,resignFirstResponder在菜单被解除时触发,并以相同的方式结束观察.
在我的情况下(如在OP中),因为项目是不可编辑的,所以resignFirstResponder当菜单被解除时我需要打电话.这样,resignFirstResponder如果他们是否选择了其中一个菜单选项,则会调用它,因此清理代码将始终触发.
| 归档时间: |
|
| 查看次数: |
5855 次 |
| 最近记录: |