【发布时间】:2020-03-14 18:12:35
【问题描述】:
我正试图强行隐藏我的 UITextField 上的粘贴气泡。
我的实现是指定来自UIResponderStandardEditActions 的禁止选择器列表,将其存储在UIResponder 类别中的AssociatedValue 中,如果在列表中找到操作,则提前退出类别的canPerformAction:withSender:。这是一种非常诱人的方法,因为它可以控制项目中的任何 Responder。
当我点击我的UITextField 时,问题是没有paste: 操作到达整个响应者链的任何canPerformAction:withSender: 方法。我在UIResponder 上写了一个类别,并在canPerformAction:withSender: 上进行了调配,所以我可以确定:
- (BOOL)my_canPerformAction:(SEL)action withSender:(id)sender {
NSString *string = NSStringFromSelector(action);
BOOL prohibited = [self.prohibitedActions containsObject:string];
if (prohibited) {
return NO;
}
BOOL canPerform = [self my_canPerformAction:action withSender:sender];
return canPerform;
}
我的层次结构的全部问题是:
cut:
copy:
select:
selectAll:
delete:
_promptForReplace:
_transliterateChinese:
_insertDrawing:
_showTextStyleOptions:
_lookup:
_define:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
_share:
makeTextWritingDirectionLeftToRight:
禁止_promptForReplace: 没有帮助。另外,我的 TextField 没有实现canPerformAction:withSender:。
那么,我应该怎么做才能追踪并隐藏那个讨厌的粘贴?
【问题讨论】:
标签: ios objective-c uitextfield paste uiresponder