mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix weird search bar text field autoscrolling
This commit is contained in:
parent
8b362c60f4
commit
7fb0b48ded
@ -255,9 +255,10 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
|||||||
strongSelf.selectedTokenIndex = i
|
strongSelf.selectedTokenIndex = i
|
||||||
if !strongSelf.isFirstResponder {
|
if !strongSelf.isFirstResponder {
|
||||||
let _ = strongSelf.becomeFirstResponder()
|
let _ = strongSelf.becomeFirstResponder()
|
||||||
|
} else {
|
||||||
|
let newPosition = strongSelf.beginningOfDocument
|
||||||
|
strongSelf.selectedTextRange = strongSelf.textRange(from: newPosition, to: newPosition)
|
||||||
}
|
}
|
||||||
let newPosition = strongSelf.beginningOfDocument
|
|
||||||
strongSelf.selectedTextRange = strongSelf.textRange(from: newPosition, to: newPosition)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let isSelected = i == self.selectedTokenIndex
|
let isSelected = i == self.selectedTokenIndex
|
||||||
@ -358,7 +359,9 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
|||||||
self.tokenContainerNode.frame = CGRect(origin: self.tokenContainerNode.frame.origin, size: CGSize(width: self.tokensWidth, height: self.bounds.height))
|
self.tokenContainerNode.frame = CGRect(origin: self.tokenContainerNode.frame.origin, size: CGSize(width: self.tokensWidth, height: self.bounds.height))
|
||||||
|
|
||||||
if let scrollView = self.scrollView {
|
if let scrollView = self.scrollView {
|
||||||
scrollView.contentInset = UIEdgeInsets(top: 0.0, left: leftOffset, bottom: 0.0, right: 0.0)
|
if scrollView.contentInset.left != leftOffset {
|
||||||
|
scrollView.contentInset = UIEdgeInsets(top: 0.0, left: leftOffset, bottom: 0.0, right: 0.0)
|
||||||
|
}
|
||||||
if leftOffset.isZero {
|
if leftOffset.isZero {
|
||||||
scrollView.contentOffset = CGPoint()
|
scrollView.contentOffset = CGPoint()
|
||||||
} else if self.tokensWidth != previousTokensWidth {
|
} else if self.tokensWidth != previousTokensWidth {
|
||||||
@ -441,14 +444,22 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fixAutoScroll: CGPoint?
|
||||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||||
self.updateTokenContainerPosition()
|
if let fixAutoScroll = self.fixAutoScroll {
|
||||||
|
self.scrollView?.setContentOffset(fixAutoScroll, animated: true)
|
||||||
|
self.scrollView?.setContentOffset(fixAutoScroll, animated: false)
|
||||||
|
self.fixAutoScroll = nil
|
||||||
|
} else {
|
||||||
|
self.updateTokenContainerPosition()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func becomeFirstResponder() -> Bool {
|
override func becomeFirstResponder() -> Bool {
|
||||||
if let contentOffset = self.scrollView?.contentOffset {
|
if let contentOffset = self.scrollView?.contentOffset {
|
||||||
Queue.mainQueue().after(0.03) {
|
self.fixAutoScroll = contentOffset
|
||||||
self.scrollView?.setContentOffset(contentOffset, animated: true)
|
Queue.mainQueue().after(0.1) {
|
||||||
|
self.fixAutoScroll = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.becomeFirstResponder()
|
return super.becomeFirstResponder()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user