我看到很多关于在UItextView中禁用长时间按的帖子,但同样的过程在UITextField和UISearchBar上是不起作用的。
有没有办法在UITextField和UISearchBar上禁用长按,这样我就可以避免长按时放大镜?
我已经检查了"Disable Magnifying Glass in UITextField“,但给出的解决方案实际上并没有禁用放大镜。它只是不允许粗略的在文本之间移动。但仍在展示放大镜。
我想禁用长按-以避免Problem,因为我面对的是放大镜。我想现在就停用它。当我能够解决这个问题时,我会再次启用它。
发布于 2016-12-02 19:26:41
您可以尝试跟随,仅禁用内置的长按手势
for (UIGestureRecognizer *recognizer in textView.gestureRecognizers) {
if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){
recognizer.enabled = NO;
}
}或
所有人的委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
return NO;
}发布于 2017-12-22 20:26:35
@Neeraj在Swift 4中的答案:
class CustomTextView: UITextView {
override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
if gestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) {
gestureRecognizer.isEnabled = false
}
return super.addGestureRecognizer(gestureRecognizer)
}
}发布于 2019-07-05 05:56:59
在自定义类中的这种组合是我唯一能够为自己工作的东西,在第一次长按下时,它有时仍然会使放大镜出现:
//swift 4.2
override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer)
{
if gestureRecognizer.isKind(of: UILongPressGestureRecognizer.self)
{
print(gestureRecognizer.name.unwrappedDebugString)
gestureRecognizer.isEnabled = false
}
return super.addGestureRecognizer(gestureRecognizer)
}
override func becomeFirstResponder() -> Bool
{
for recognizer in self.gestureRecognizers ?? []
{
if (recognizer is UILongPressGestureRecognizer)
{
recognizer.isEnabled = false
}
}
return super.becomeFirstResponder()
}https://stackoverflow.com/questions/40930592
复制相似问题