Проблема смещения касания в ios12 - PullRequest
0 голосов
/ 07 октября 2018

Я работаю над формой, которая работает внутри веб-просмотра.После появления и закрытия одного из собственных всплывающих окон ios, например, когда клавиатура появляется в текстовой области или когда выпадающие выпадающие окна, возникает проблема с касанием.В постукивании есть смещение, примерно равное высоте всплывающего окна клавиатуры / выпадающего меню.Поэтому, когда я нажимаю на точку в форме, нажимается другой компонент, который на 200-300 пикселей ниже.Это происходит только в ios12.Единственный обходной путь, который я нашел для этого, - это пин-аут и вход. Есть ли у вас какие-либо предложения по решению?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Это сработало для меня.

ViewController.h

@property (nonatomic) CGPoint lastContentOffset;

ViewController.m

- (void)viewDidLoad {    
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onKeyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}

- (void)onKeyboardWillShow:(NSNotification *)notification {
    self.lastContentOffset = self.webView.scrollView.contentOffset;
}

- (void)onKeyboardWillHide:(NSNotification *)notification {
    if (!CGPointEqualToPoint(self.lastContentOffset, self.webView.scrollView.contentOffset)) {
        [self.webView.scrollView setContentOffset:self.lastContentOffset];
        [self.webView.scrollView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }

    if (!CGPointEqualToPoint(self.lastContentOffset, self.webView.scrollView.contentOffset)) {
        [self.webView.scrollView setContentOffset:self.lastContentOffset];
        [self.webView.scrollView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }
 }
0 голосов
/ 11 октября 2018

Я исправляю хитрым способом, попробуйте:

- (void)keybordDidHide {
    if (!CGPointEqualToPoint(self.lastContentOffset, self.webView.scrollView.contentOffset)) {
        [self.webView.scrollView setContentOffset:self.lastContentOffset];
        [self.webView.scrollView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }
}

- (void)keybordWillShow {
    self.lastContentOffset = self.webView.scrollView.contentOffset;
}
...