Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func didChangeText(range: NSRange, replacementText text: String) {
- let marker = "@"
- var str = ""
- if validInputStarted {
- switch (0) {
- case _ where stringRange.lowerBound <= range.lowerBound && range.lowerBound <= stringRange.upperBound:
- stringRange = stringRange.lowerBound..<stringRange.upperBound + (text.count - range.length)
- str = String(Array(textView.text)[stringRange])
- fallthrough
- case _ where str.range(of: "^[a-z0-9]*(\\.[a-z0-9])*$", options: .regularExpression) != nil: break
- default:
- validInputStarted = false
- clear()
- return
- }
- }
- if !validInputStarted, range.lowerBound + text.count - marker.count >= 0 && text.count > 0 {
- let markerRange = Range(range.lowerBound - marker.count + text.count..<range.lowerBound + text.count)
- if String(Array(textView.text)[markerRange]) == marker {
- stringRange = markerRange.lowerBound + marker.count..<markerRange.upperBound
- validInputStarted = true
- if (self.topConstraint?.isActive ?? true) == false { // show gui
- UIView.animate(withDuration: 0.3, animations: {
- self.topConstraint?.isActive = true
- self.layoutIfNeeded()
- })
- }
- }
- }
- guard validInputStarted else {
- return
- }
- print(str) // готовая строка
- requestSessionTask?.cancel()
- let searchText = (str as String).addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? ""
- var closuredRequest:URLSessionTask? = nil
- closuredRequest = SearchManager.getAutocompleteWithFollws(searchText, completion: {
- _, result, error in
- if error == nil {
- self.arItems = result
- self.tableView.reloadData()
- }
- if closuredRequest == self.requestSessionTask {
- self.requestSessionTask = nil
- }
- })
- requestSessionTask = closuredRequest
- }
- //MARK: Textview delegate
- private var changedTextRange: NSRange! = nil
- private var replacementText: String! = nil
- func textViewDidChange(_ textView: UITextView) {
- UpdateTextViewSize()
- guard changedTextRange != nil, replacementText != nil else {
- return
- }
- autocomplete.didChangeText(range: changedTextRange, replacementText: replacementText)
- changedTextRange = nil
- replacementText = nil
- }
- func textViewDidChangeSelection(_ textView: UITextView) {
- if changedTextRange == nil {
- autocomplete.didChangeText(range: textView.selectedRange, replacementText: "")
- }
- }
- func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
- let newText = (textView.text as NSString).substring(to: range.location) + text + (textView.text as NSString).substring(from: range.location + range.length)
- if text == "\n" {
- tapOK()
- return false
- }
- if !TextParameters.isValidLengthForFieldType(
- TextFieldType.comment,
- len: newText.count,
- showAlert: true) {
- return false
- }
- changedTextRange = range
- replacementText = text
- return true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement