mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
8fe68fd1ed
commit
385e212f3f
@ -935,8 +935,9 @@ private class TimeInputView: UIView, UIKeyInput {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
var didReset = false
|
var length: Int = 4
|
||||||
|
|
||||||
|
private var didReset = false
|
||||||
private let nonDigits = CharacterSet.decimalDigits.inverted
|
private let nonDigits = CharacterSet.decimalDigits.inverted
|
||||||
func insertText(_ text: String) {
|
func insertText(_ text: String) {
|
||||||
if text.rangeOfCharacter(from: nonDigits) != nil {
|
if text.rangeOfCharacter(from: nonDigits) != nil {
|
||||||
@ -948,7 +949,7 @@ private class TimeInputView: UIView, UIKeyInput {
|
|||||||
}
|
}
|
||||||
var updatedText = self.text
|
var updatedText = self.text
|
||||||
updatedText.append(text)
|
updatedText.append(text)
|
||||||
self.text = updatedText
|
self.text = String(updatedText.suffix(length))
|
||||||
self.textUpdated?(self.text)
|
self.textUpdated?(self.text)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -964,6 +965,20 @@ private class TimeInputView: UIView, UIKeyInput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class TimeInputNode: ASDisplayNode {
|
private class TimeInputNode: ASDisplayNode {
|
||||||
|
var length: Int {
|
||||||
|
get {
|
||||||
|
if let view = self.view as? TimeInputView {
|
||||||
|
return view.length
|
||||||
|
} else {
|
||||||
|
return 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if let view = self.view as? TimeInputView {
|
||||||
|
view.length = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
var text: String {
|
var text: String {
|
||||||
get {
|
get {
|
||||||
if let view = self.view as? TimeInputView {
|
if let view = self.view as? TimeInputView {
|
||||||
@ -1395,6 +1410,8 @@ private final class TimePickerNode: ASDisplayNode {
|
|||||||
self.hoursNode.isHidden = false
|
self.hoursNode.isHidden = false
|
||||||
self.minutesNode.isHidden = false
|
self.minutesNode.isHidden = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.inputNode.length = 2
|
||||||
case .minutes:
|
case .minutes:
|
||||||
colonColor = self.theme.textColor
|
colonColor = self.theme.textColor
|
||||||
self.colonNode.alpha = 0.35
|
self.colonNode.alpha = 0.35
|
||||||
@ -1422,6 +1439,8 @@ private final class TimePickerNode: ASDisplayNode {
|
|||||||
self.hoursNode.isHidden = false
|
self.hoursNode.isHidden = false
|
||||||
self.minutesNode.isHidden = false
|
self.minutesNode.isHidden = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.inputNode.length = 2
|
||||||
case .all:
|
case .all:
|
||||||
colonColor = self.theme.accentColor
|
colonColor = self.theme.accentColor
|
||||||
self.colonNode.alpha = 1.0
|
self.colonNode.alpha = 1.0
|
||||||
@ -1449,6 +1468,8 @@ private final class TimePickerNode: ASDisplayNode {
|
|||||||
self.hoursNode.isHidden = false
|
self.hoursNode.isHidden = false
|
||||||
self.minutesNode.isHidden = false
|
self.minutesNode.isHidden = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.inputNode.length = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
if let size = self.validLayout {
|
if let size = self.validLayout {
|
||||||
|
@ -487,6 +487,10 @@ public class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDeleg
|
|||||||
var text = textField.text ?? ""
|
var text = textField.text ?? ""
|
||||||
text.replaceSubrange(text.index(text.startIndex, offsetBy: range.lowerBound) ..< text.index(text.startIndex, offsetBy: range.upperBound), with: result)
|
text.replaceSubrange(text.index(text.startIndex, offsetBy: range.lowerBound) ..< text.index(text.startIndex, offsetBy: range.upperBound), with: result)
|
||||||
textField.text = text
|
textField.text = text
|
||||||
|
if case .username = item.type {
|
||||||
|
text = text.folding(options: .diacriticInsensitive, locale: .current).replacingOccurrences(of: " ", with: "_")
|
||||||
|
textField.text = text
|
||||||
|
}
|
||||||
if let startPosition = textField.position(from: textField.beginningOfDocument, offset: range.lowerBound + result.count) {
|
if let startPosition = textField.position(from: textField.beginningOfDocument, offset: range.lowerBound + result.count) {
|
||||||
let selectionRange = textField.textRange(from: startPosition, to: startPosition)
|
let selectionRange = textField.textRange(from: startPosition, to: startPosition)
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
@ -497,6 +501,24 @@ public class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDeleg
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let item = self.item, case .username = item.type {
|
||||||
|
let cleanString = string.folding(options: .diacriticInsensitive, locale: .current).replacingOccurrences(of: " ", with: "_")
|
||||||
|
if cleanString != string {
|
||||||
|
var text = textField.text ?? ""
|
||||||
|
text.replaceSubrange(text.index(text.startIndex, offsetBy: range.lowerBound) ..< text.index(text.startIndex, offsetBy: range.upperBound), with: cleanString)
|
||||||
|
textField.text = text
|
||||||
|
if let startPosition = textField.position(from: textField.beginningOfDocument, offset: range.lowerBound + cleanString.count) {
|
||||||
|
let selectionRange = textField.textRange(from: startPosition, to: startPosition)
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
textField.selectedTextRange = selectionRange
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.textFieldTextChanged(textField)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user