Iphone 在UITextview中禁用放大镜
在Iphone 在UITextview中禁用放大镜,iphone,uiscrollview,uitextview,Iphone,Uiscrollview,Uitextview,在UITextview中,当长时间按下触摸键时,放大镜显示。如何禁用它。最后,这个问题也得到了解决 以下是代码供参考,以防任何人需要 在子类UITextview的m文件中添加了代码 -(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer { //Prevent zooming but not panning if ([gestureRecognizer isKindOfClass:[UILongP
UITextview
中,当长时间按下触摸键时,放大镜显示。如何禁用它。最后,这个问题也得到了解决
以下是代码供参考,以防任何人需要
在子类UITextview的m文件中添加了代码
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
//Prevent zooming but not panning
if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
gestureRecognizer.enabled = NO;
}
[super addGestureRecognizer:gestureRecognizer];
return;
}
它很管用。这对我很管用
@implementation CustomTextView
- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
self.selectedTextRange = nil;
return nil;
}
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
gestureRecognizer.delegate = self;
[super addGestureRecognizer:gestureRecognizer];
return;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return NO;
}
- (CGRect)caretRectForPosition:(UITextPosition *)position
{
return [super caretRectForPosition:self.endOfDocument];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && !gestureRecognizer.delaysTouchesEnded))
{
return NO;
}
else
return YES;
}
@Irina的回答在iOS 9.x上部分有效(尝试轻触然后长按,您将有一个放大覆盖图),并在iOS 10上崩溃,原因如下: ***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“您无法更改代理。” UIViewControllerPreview失败关系手势的 识别器 以下代码适用于iOS 9.x和10.x,我能想到的每种轻触和/或长手势组合 注意我不保证它会被苹果的评论所接受
我们需要
UIScrollViewDelayedTouchesbegangeStureRecogniter
和UIScrollViewPangTestureRecognitor
,以保持UITextView
的滚动能力。这两个类都是私有API的一部分,因此使用它们的风险自负。Swift 4版本@user1120133的答案:
override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
//Prevent long press to show the magnifying glass
if gestureRecognizer is UILongPressGestureRecognizer {
gestureRecognizer.isEnabled = false
}
super.addGestureRecognizer(gestureRecognizer)
}
Xamarin.iOS:
UITextView上的gestureRecognitizerShouldBegin
方法
看看这个答案是什么。不需要子类。但如果我没有弄错的话,这将完全禁用长按。换句话说,如果您的文本视图包含URL链接或电话号码(如果您启用了检测),则长按时,您的文本视图将无法响应它们,对吗?是否还要禁用插入符号和文本编辑?看到这个答案->是的,就像@antf说的,这个代码完全禁用了链接、电话和事件上的触摸。在ios9中有同样的问题,我只需要解析MagingGlass,而不需要解析url和电话触摸事件。@Madhu检查我刚刚发布的答案。它可能会给你一些见解。
override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
//Prevent long press to show the magnifying glass
if gestureRecognizer is UILongPressGestureRecognizer {
gestureRecognizer.isEnabled = false
}
super.addGestureRecognizer(gestureRecognizer)
}
public override bool GestureRecognizerShouldBegin(UIGestureRecognizer gestureRecognizer)
{
if (gestureRecognizer is UILongPressGestureRecognizer ||
gestureRecognizer.Name != "UITextInteractionNameLinkTap")
{
return false;
}
return true;
}