В UITextview
, когда нажата сенсорная кнопка для увеличения времени увеличения увеличительного стекла. Как я могу отключить его.
Отключить увеличительное стекло в UITextview
Ответ 1
Наконец, эта проблема также решена.
Вот код для ссылки, если кому-то нужно
в файле m подкласса UITextview добавлен код
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
//Prevent zooming but not panning
if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
gestureRecognizer.enabled = NO;
}
[super addGestureRecognizer:gestureRecognizer];
return;
}
Он работает.
Ответ 2
Это работает для меня
@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;
}
Ответ 3
Xamarin.iOS:
- Создать пользовательский UITextView
- Переопределите метод
GestureRecognizerShouldBegin
в вашемUITextView
public override bool GestureRecognizerShouldBegin(UIGestureRecognizer gestureRecognizer)
{
if (gestureRecognizer is UILongPressGestureRecognizer ||
gestureRecognizer.Name != "UITextInteractionNameLinkTap")
{
return false;
}
return true;
}
Ответ 4
@Ответ на Ирину частично работает (попробуйте кратковременное нажатие, а затем вы получите увеличенный оверлей) для iOS 9.x и сбои на iOS 10 со следующим:
*** Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: "Вы не можете изменить делегат жестов отношения UIViewControllerPreviewing распознаватель '
Следующий код работает как для iOS 9.x, так и 10.x в каждой комбинации кранов и/или длинных жестов, о которых я мог подумать.
Примечание Я не гарантирую, что он будет принят обзором Apple.
@implementation CustomTextView
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
NSArray *allowedGestures = @[ @"UILongPressGestureRecognizer", @"UIScrollViewDelayedTouchesBeganGestureRecognizer", @"UIScrollViewPanGestureRecognizer" ];
if (![allowedGestures containsObject:NSStringFromClass([gestureRecognizer class])])
{
return;
}
if (([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && !gestureRecognizer.delaysTouchesEnded))
{
return;
}
[super addGestureRecognizer:gestureRecognizer];
}
@end
Нам нужны UIScrollViewDelayedTouchesBeganGestureRecognizer
и UIScrollViewPanGestureRecognizer
, чтобы сохранить способность UITextView
прокручиваться. Оба класса являются частным API , поэтому используйте это на свой страх и риск.
Ответ 5
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)
}