701 lines
24 KiB
Swift
701 lines
24 KiB
Swift
//
|
|
// Example
|
|
// man
|
|
//
|
|
// Created by man 11/11/2018.
|
|
// Copyright © 2020 man. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class LogViewController: UIViewController {
|
|
|
|
var reachEndDefault: Bool = true
|
|
var reachEndRN: Bool = true
|
|
var reachEndWeb: Bool = true
|
|
|
|
var firstInDefault: Bool = true
|
|
var firstInRN: Bool = true
|
|
var firstInWeb: Bool = true
|
|
|
|
var selectedSegmentIndex: Int = 0
|
|
var selectedSegment_0: Bool = false
|
|
var selectedSegment_1: Bool = false
|
|
var selectedSegment_2: Bool = false
|
|
|
|
var defaultReloadDataFinish: Bool = true
|
|
var rnReloadDataFinish: Bool = true
|
|
var webReloadDataFinish: Bool = true
|
|
|
|
|
|
@IBOutlet weak var segmentedControl: UISegmentedControl!
|
|
@IBOutlet weak var deleteItem: UIBarButtonItem!
|
|
|
|
@IBOutlet weak var defaultTableView: UITableView!
|
|
@IBOutlet weak var defaultSearchBar: UISearchBar!
|
|
var defaultModels: [_OCLogModel] = [_OCLogModel]()
|
|
var defaultCacheModels: Array<_OCLogModel>?
|
|
var defaultSearchModels: Array<_OCLogModel>?
|
|
|
|
@IBOutlet weak var rnTableView: UITableView!
|
|
@IBOutlet weak var rnSearchBar: UISearchBar!
|
|
var rnModels: [_OCLogModel] = [_OCLogModel]()
|
|
var rnCacheModels: Array<_OCLogModel>?
|
|
var rnSearchModels: Array<_OCLogModel>?
|
|
|
|
@IBOutlet weak var webTableView: UITableView!
|
|
@IBOutlet weak var webSearchBar: UISearchBar!
|
|
var webModels: [_OCLogModel] = [_OCLogModel]()
|
|
var webCacheModels: Array<_OCLogModel>?
|
|
var webSearchModels: Array<_OCLogModel>?
|
|
|
|
|
|
|
|
//MARK: - tool
|
|
//搜索逻辑
|
|
func searchLogic(_ searchText: String = "") {
|
|
|
|
if selectedSegmentIndex == 0
|
|
{
|
|
guard let defaultCacheModels = defaultCacheModels else {return}
|
|
defaultSearchModels = defaultCacheModels
|
|
|
|
if searchText == "" {
|
|
defaultModels = defaultCacheModels
|
|
} else {
|
|
guard let defaultSearchModels = defaultSearchModels else {return}
|
|
|
|
for _ in defaultSearchModels {
|
|
if let index = self.defaultSearchModels?.firstIndex(where: { (model) -> Bool in
|
|
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
|
}) {
|
|
self.defaultSearchModels?.remove(at: index)
|
|
}
|
|
}
|
|
defaultModels = self.defaultSearchModels ?? []
|
|
}
|
|
}
|
|
else if selectedSegmentIndex == 1
|
|
{
|
|
guard let rnCacheModels = rnCacheModels else {return}
|
|
rnSearchModels = rnCacheModels
|
|
|
|
if searchText == "" {
|
|
rnModels = rnCacheModels
|
|
} else {
|
|
guard let rnSearchModels = rnSearchModels else {return}
|
|
|
|
for _ in rnSearchModels {
|
|
if let index = self.rnSearchModels?.firstIndex(where: { (model) -> Bool in
|
|
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
|
}) {
|
|
self.rnSearchModels?.remove(at: index)
|
|
}
|
|
}
|
|
rnModels = self.rnSearchModels ?? []
|
|
}
|
|
}
|
|
else
|
|
{
|
|
guard let webCacheModels = webCacheModels else {return}
|
|
webSearchModels = webCacheModels
|
|
|
|
if searchText == "" {
|
|
webModels = webCacheModels
|
|
} else {
|
|
guard let webSearchModels = webSearchModels else {return}
|
|
|
|
for _ in webSearchModels {
|
|
if let index = self.webSearchModels?.firstIndex(where: { (model) -> Bool in
|
|
return !model.content.lowercased().contains(searchText.lowercased())//忽略大小写
|
|
}) {
|
|
self.webSearchModels?.remove(at: index)
|
|
}
|
|
}
|
|
webModels = self.webSearchModels ?? []
|
|
}
|
|
}
|
|
}
|
|
|
|
//MARK: - private
|
|
func reloadLogs(needScrollToEnd: Bool = false, needReloadData: Bool = true) {
|
|
|
|
if selectedSegmentIndex == 0
|
|
{
|
|
if defaultReloadDataFinish == false {return}
|
|
|
|
if defaultSearchBar.isHidden != false ||
|
|
rnSearchBar.isHidden != true ||
|
|
webSearchBar.isHidden != true {
|
|
defaultSearchBar.isHidden = false
|
|
rnSearchBar.isHidden = true
|
|
webSearchBar.isHidden = true
|
|
}
|
|
|
|
if defaultTableView.isHidden != false ||
|
|
rnTableView.isHidden != true ||
|
|
webTableView.isHidden != true {
|
|
defaultTableView.isHidden = false
|
|
rnTableView.isHidden = true
|
|
webTableView.isHidden = true
|
|
}
|
|
|
|
if needReloadData == false && defaultModels.count > 0 {return}
|
|
|
|
if let arr = _OCLogStoreManager.shared()?.normalLogArray {
|
|
defaultModels = arr as! [_OCLogModel]
|
|
}
|
|
|
|
self.defaultCacheModels = self.defaultModels
|
|
|
|
self.searchLogic(CocoaDebugSettings.shared.logSearchWordNormal ?? "")
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.defaultReloadDataFinish = false
|
|
self.defaultTableView.reloadData {
|
|
self.defaultReloadDataFinish = true
|
|
}
|
|
|
|
if needScrollToEnd == false {return}
|
|
|
|
//table下滑到底部
|
|
// guard let count = self.defaultModels.count else {return}
|
|
if self.defaultModels.count > 0 {
|
|
// guard let firstInDefault = self.firstInDefault else {return}
|
|
self.defaultTableView.tableViewScrollToBottom(animated: !firstInDefault)
|
|
self.firstInDefault = false
|
|
}
|
|
// }
|
|
}
|
|
else if selectedSegmentIndex == 1
|
|
{
|
|
if rnReloadDataFinish == false {return}
|
|
|
|
if defaultSearchBar.isHidden != true ||
|
|
rnSearchBar.isHidden != false ||
|
|
webSearchBar.isHidden != true {
|
|
defaultSearchBar.isHidden = true
|
|
rnSearchBar.isHidden = false
|
|
webSearchBar.isHidden = true
|
|
}
|
|
|
|
if defaultTableView.isHidden != true ||
|
|
rnTableView.isHidden != false ||
|
|
webTableView.isHidden != true {
|
|
defaultTableView.isHidden = true
|
|
rnTableView.isHidden = false
|
|
webTableView.isHidden = true
|
|
}
|
|
|
|
if needReloadData == false && rnModels.count > 0 {return}
|
|
|
|
if let arr = _OCLogStoreManager.shared()?.rnLogArray {
|
|
rnModels = arr as! [_OCLogModel]
|
|
}
|
|
|
|
self.rnCacheModels = self.rnModels
|
|
|
|
self.searchLogic(CocoaDebugSettings.shared.logSearchWordRN ?? "")
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.rnReloadDataFinish = false
|
|
self.rnTableView.reloadData {
|
|
self.rnReloadDataFinish = true
|
|
}
|
|
|
|
if needScrollToEnd == false {return}
|
|
|
|
//table下滑到底部
|
|
// guard let count = self.rnModels.count else {return}
|
|
if self.rnModels.count > 0 {
|
|
// guard let firstInRN = self.firstInRN else {return}
|
|
self.rnTableView.tableViewScrollToBottom(animated: !firstInRN)
|
|
self.firstInRN = false
|
|
}
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
if webReloadDataFinish == false {return}
|
|
|
|
if defaultSearchBar.isHidden != true ||
|
|
rnSearchBar.isHidden != true ||
|
|
webSearchBar.isHidden != false {
|
|
defaultSearchBar.isHidden = true
|
|
rnSearchBar.isHidden = true
|
|
webSearchBar.isHidden = false
|
|
}
|
|
|
|
if defaultTableView.isHidden != true ||
|
|
rnTableView.isHidden != true ||
|
|
webTableView.isHidden != false {
|
|
defaultTableView.isHidden = true
|
|
rnTableView.isHidden = true
|
|
webTableView.isHidden = false
|
|
}
|
|
|
|
if needReloadData == false && webModels.count > 0 {return}
|
|
|
|
if let arr = _OCLogStoreManager.shared().webLogArray {
|
|
webModels = arr as! [_OCLogModel]
|
|
}
|
|
|
|
self.webCacheModels = self.webModels
|
|
|
|
self.searchLogic(CocoaDebugSettings.shared.logSearchWordWeb ?? "")
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.webReloadDataFinish = false
|
|
self.webTableView.reloadData {
|
|
self.webReloadDataFinish = true
|
|
}
|
|
|
|
if needScrollToEnd == false {return}
|
|
|
|
//table下滑到底部
|
|
// guard let count = self.webModels.count else {return}
|
|
if self.webModels.count > 0 {
|
|
// guard let firstInWeb = self.firstInWeb else {return}
|
|
self.webTableView.tableViewScrollToBottom(animated: !firstInWeb)
|
|
self.firstInWeb = false
|
|
}
|
|
// }
|
|
}
|
|
}
|
|
|
|
|
|
//MARK: - init
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
let tap = UITapGestureRecognizer.init(target: self, action: #selector(didTapView))
|
|
tap.cancelsTouchesInView = false
|
|
view.addGestureRecognizer(tap)
|
|
|
|
|
|
deleteItem.tintColor = Color.mainGreen
|
|
segmentedControl.tintColor = Color.mainGreen
|
|
|
|
if UIScreen.main.bounds.size.width == 320 {
|
|
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 11)], for: .normal)
|
|
} else {
|
|
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13)], for: .normal)
|
|
}
|
|
|
|
//notification
|
|
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "refreshLogs_CocoaDebug"), object: nil, queue: OperationQueue.main) { [weak self] _ in
|
|
self?.refreshLogs_notification()
|
|
}
|
|
|
|
|
|
defaultTableView.tableFooterView = UIView()
|
|
defaultTableView.delegate = self
|
|
defaultTableView.dataSource = self
|
|
// defaultTableView.rowHeight = UITableViewAutomaticDimension
|
|
defaultSearchBar.delegate = self
|
|
defaultSearchBar.text = CocoaDebugSettings.shared.logSearchWordNormal
|
|
defaultSearchBar.isHidden = true
|
|
//抖动bug
|
|
defaultTableView.estimatedRowHeight = 0
|
|
defaultTableView.estimatedSectionHeaderHeight = 0
|
|
defaultTableView.estimatedSectionFooterHeight = 0
|
|
|
|
|
|
|
|
rnTableView.tableFooterView = UIView()
|
|
rnTableView.delegate = self
|
|
rnTableView.dataSource = self
|
|
// rnTableView.rowHeight = UITableViewAutomaticDimension
|
|
rnSearchBar.delegate = self
|
|
rnSearchBar.text = CocoaDebugSettings.shared.logSearchWordRN
|
|
rnSearchBar.isHidden = true
|
|
//抖动bug
|
|
rnTableView.estimatedRowHeight = 0
|
|
rnTableView.estimatedSectionHeaderHeight = 0
|
|
rnTableView.estimatedSectionFooterHeight = 0
|
|
|
|
|
|
|
|
webTableView.tableFooterView = UIView()
|
|
webTableView.delegate = self
|
|
webTableView.dataSource = self
|
|
// webTableView.rowHeight = UITableViewAutomaticDimension
|
|
webSearchBar.delegate = self
|
|
webSearchBar.text = CocoaDebugSettings.shared.logSearchWordWeb
|
|
webSearchBar.isHidden = true
|
|
//抖动bug
|
|
webTableView.estimatedRowHeight = 0
|
|
webTableView.estimatedSectionHeaderHeight = 0
|
|
webTableView.estimatedSectionFooterHeight = 0
|
|
|
|
|
|
|
|
//segmentedControl
|
|
selectedSegmentIndex = CocoaDebugSettings.shared.logSelectIndex
|
|
segmentedControl.selectedSegmentIndex = selectedSegmentIndex
|
|
|
|
if selectedSegmentIndex == 0 {
|
|
selectedSegment_0 = true
|
|
} else if selectedSegmentIndex == 1 {
|
|
selectedSegment_1 = true
|
|
} else {
|
|
selectedSegment_2 = true
|
|
}
|
|
|
|
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
|
|
|
|
|
|
|
//hide searchBar icon
|
|
let textFieldInsideSearchBar = defaultSearchBar.value(forKey: "searchField") as! UITextField
|
|
textFieldInsideSearchBar.leftViewMode = .never
|
|
textFieldInsideSearchBar.leftView = nil
|
|
textFieldInsideSearchBar.backgroundColor = .white
|
|
textFieldInsideSearchBar.returnKeyType = .default
|
|
|
|
let textFieldInsideSearchBar2 = rnSearchBar.value(forKey: "searchField") as! UITextField
|
|
textFieldInsideSearchBar2.leftViewMode = .never
|
|
textFieldInsideSearchBar2.leftView = nil
|
|
textFieldInsideSearchBar2.backgroundColor = .white
|
|
textFieldInsideSearchBar2.returnKeyType = .default
|
|
|
|
let textFieldInsideSearchBar3 = webSearchBar.value(forKey: "searchField") as! UITextField
|
|
textFieldInsideSearchBar3.leftViewMode = .never
|
|
textFieldInsideSearchBar3.leftView = nil
|
|
textFieldInsideSearchBar3.backgroundColor = .white
|
|
textFieldInsideSearchBar3.returnKeyType = .default
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
defaultSearchBar.resignFirstResponder()
|
|
rnSearchBar.resignFirstResponder()
|
|
webSearchBar.resignFirstResponder()
|
|
}
|
|
|
|
deinit {
|
|
//notification
|
|
NotificationCenter.default.removeObserver(self)
|
|
}
|
|
|
|
|
|
//MARK: - target action
|
|
@IBAction func didTapDown(_ sender: Any) {
|
|
if selectedSegmentIndex == 0
|
|
{
|
|
defaultTableView.tableViewScrollToBottom(animated: true)
|
|
defaultSearchBar.resignFirstResponder()
|
|
reachEndDefault = true
|
|
}
|
|
else if selectedSegmentIndex == 1
|
|
{
|
|
rnTableView.tableViewScrollToBottom(animated: true)
|
|
rnSearchBar.resignFirstResponder()
|
|
reachEndRN = true
|
|
}
|
|
else
|
|
{
|
|
webTableView.tableViewScrollToBottom(animated: true)
|
|
webSearchBar.resignFirstResponder()
|
|
reachEndWeb = true
|
|
}
|
|
}
|
|
|
|
@IBAction func didTapUp(_ sender: Any) {
|
|
if selectedSegmentIndex == 0
|
|
{
|
|
defaultTableView.tableViewScrollToHeader(animated: true)
|
|
defaultSearchBar.resignFirstResponder()
|
|
reachEndDefault = false
|
|
}
|
|
else if selectedSegmentIndex == 1
|
|
{
|
|
rnTableView.tableViewScrollToHeader(animated: true)
|
|
rnSearchBar.resignFirstResponder()
|
|
reachEndRN = false
|
|
}
|
|
else
|
|
{
|
|
webTableView.tableViewScrollToHeader(animated: true)
|
|
webSearchBar.resignFirstResponder()
|
|
reachEndWeb = false
|
|
}
|
|
}
|
|
|
|
|
|
@IBAction func resetLogs(_ sender: Any) {
|
|
if selectedSegmentIndex == 0
|
|
{
|
|
defaultModels = []
|
|
defaultCacheModels = []
|
|
// defaultSearchBar.text = nil
|
|
defaultSearchBar.resignFirstResponder()
|
|
// CocoaDebugSettings.shared.logSearchWordNormal = nil
|
|
|
|
_OCLogStoreManager.shared()?.resetNormalLogs()
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.defaultTableView.reloadData()
|
|
// }
|
|
}
|
|
else if selectedSegmentIndex == 1
|
|
{
|
|
rnModels = []
|
|
rnCacheModels = []
|
|
// rnSearchBar.text = nil
|
|
rnSearchBar.resignFirstResponder()
|
|
// CocoaDebugSettings.shared.logSearchWordRN = nil
|
|
|
|
_OCLogStoreManager.shared()?.resetRNLogs()
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.rnTableView.reloadData()
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
webModels = []
|
|
webCacheModels = []
|
|
// webSearchBar.text = nil
|
|
webSearchBar.resignFirstResponder()
|
|
// CocoaDebugSettings.shared.logSearchWordWeb = nil
|
|
|
|
_OCLogStoreManager.shared().resetWebLogs()
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.webTableView.reloadData()
|
|
// }
|
|
}
|
|
}
|
|
|
|
@IBAction func segmentedControlAction(_ sender: UISegmentedControl) {
|
|
selectedSegmentIndex = segmentedControl.selectedSegmentIndex
|
|
CocoaDebugSettings.shared.logSelectIndex = selectedSegmentIndex
|
|
|
|
if selectedSegmentIndex == 0 {
|
|
rnSearchBar.resignFirstResponder()
|
|
webSearchBar.resignFirstResponder()
|
|
} else if selectedSegmentIndex == 1 {
|
|
defaultSearchBar.resignFirstResponder()
|
|
webSearchBar.resignFirstResponder()
|
|
} else {
|
|
defaultSearchBar.resignFirstResponder()
|
|
rnSearchBar.resignFirstResponder()
|
|
}
|
|
|
|
if selectedSegmentIndex == 0 && selectedSegment_0 == false {
|
|
selectedSegment_0 = true
|
|
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
|
return
|
|
}
|
|
|
|
if selectedSegmentIndex == 1 && selectedSegment_1 == false {
|
|
selectedSegment_1 = true
|
|
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
|
return
|
|
}
|
|
|
|
if selectedSegmentIndex == 2 && selectedSegment_2 == false {
|
|
selectedSegment_2 = true
|
|
reloadLogs(needScrollToEnd: true, needReloadData: true)
|
|
return
|
|
}
|
|
|
|
reloadLogs(needScrollToEnd: false, needReloadData: false)
|
|
}
|
|
|
|
@objc func didTapView() {
|
|
if selectedSegmentIndex == 0 {
|
|
defaultSearchBar.resignFirstResponder()
|
|
} else if selectedSegmentIndex == 1 {
|
|
rnSearchBar.resignFirstResponder()
|
|
} else {
|
|
webSearchBar.resignFirstResponder()
|
|
}
|
|
}
|
|
|
|
|
|
//MARK: - notification
|
|
@objc func refreshLogs_notification() {
|
|
if self.selectedSegmentIndex == 0 {
|
|
self.reloadLogs(needScrollToEnd: self.reachEndDefault , needReloadData: true)
|
|
} else if self.selectedSegmentIndex == 1 {
|
|
self.reloadLogs(needScrollToEnd: self.reachEndRN , needReloadData: true)
|
|
} else {
|
|
self.reloadLogs(needScrollToEnd: self.reachEndWeb , needReloadData: true)
|
|
}
|
|
}
|
|
}
|
|
|
|
//MARK: - UITableViewDataSource
|
|
extension LogViewController: UITableViewDataSource {
|
|
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
if tableView == defaultTableView {
|
|
return defaultModels.count
|
|
} else if tableView == rnTableView {
|
|
return rnModels.count
|
|
} else {
|
|
return webModels.count
|
|
}
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
|
let cell = tableView.dequeueReusableCell(withIdentifier: "LogCell", for: indexPath) as! LogCell
|
|
|
|
if tableView == defaultTableView
|
|
{
|
|
cell.model = defaultModels[indexPath.row]
|
|
}
|
|
else if tableView == rnTableView
|
|
{
|
|
cell.model = rnModels[indexPath.row]
|
|
}
|
|
else
|
|
{
|
|
cell.model = webModels[indexPath.row]
|
|
}
|
|
|
|
return cell
|
|
}
|
|
}
|
|
|
|
//MARK: - UITableViewDelegate
|
|
extension LogViewController: UITableViewDelegate {
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
tableView.deselectRow(at: indexPath, animated: true)
|
|
|
|
var logTitleString = ""
|
|
var models_: [_OCLogModel]?
|
|
|
|
if tableView == defaultTableView
|
|
{
|
|
defaultSearchBar.resignFirstResponder()
|
|
reachEndDefault = false
|
|
logTitleString = "Log"
|
|
models_ = defaultModels
|
|
}
|
|
else if tableView == rnTableView
|
|
{
|
|
rnSearchBar.resignFirstResponder()
|
|
reachEndRN = false
|
|
logTitleString = "RN"
|
|
models_ = rnModels
|
|
}
|
|
else
|
|
{
|
|
webSearchBar.resignFirstResponder()
|
|
reachEndWeb = false
|
|
logTitleString = "Web"
|
|
models_ = webModels
|
|
}
|
|
|
|
//
|
|
guard let models = models_ else {return}
|
|
|
|
let vc = JsonViewController.instanceFromStoryBoard()
|
|
vc.editType = .log
|
|
vc.logTitleString = logTitleString
|
|
vc.logModels = models
|
|
vc.logModel = models[indexPath.row]
|
|
|
|
navigationController?.pushViewController(vc, animated: true)
|
|
|
|
vc.justCancelCallback = {
|
|
tableView.reloadData()
|
|
}
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
|
|
|
var model: _OCLogModel
|
|
|
|
if tableView == defaultTableView {
|
|
model = defaultModels[indexPath.row]
|
|
|
|
} else if tableView == rnTableView {
|
|
model = rnModels[indexPath.row]
|
|
|
|
} else {
|
|
model = webModels[indexPath.row]
|
|
}
|
|
|
|
if let height = model.str?.height(with: UIFont.boldSystemFont(ofSize: 12), constraintToWidth: UIScreen.main.bounds.size.width) {
|
|
return height + 10;
|
|
}
|
|
|
|
return 0
|
|
}
|
|
}
|
|
|
|
//MARK: - UIScrollViewDelegate
|
|
extension LogViewController: UIScrollViewDelegate {
|
|
|
|
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
|
if scrollView == defaultTableView {
|
|
defaultSearchBar.resignFirstResponder()
|
|
reachEndDefault = false
|
|
} else if scrollView == rnTableView {
|
|
rnSearchBar.resignFirstResponder()
|
|
reachEndRN = false
|
|
} else {
|
|
webSearchBar.resignFirstResponder()
|
|
reachEndWeb = false
|
|
}
|
|
}
|
|
|
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
if (scrollView.contentOffset.y + 1) >= (scrollView.contentSize.height - scrollView.frame.size.height) {
|
|
//bottom reached
|
|
if scrollView == defaultTableView {
|
|
reachEndDefault = true
|
|
} else if scrollView == rnTableView {
|
|
reachEndRN = true
|
|
} else {
|
|
reachEndWeb = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//MARK: - UISearchBarDelegate
|
|
extension LogViewController: UISearchBarDelegate {
|
|
|
|
func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
|
|
{
|
|
searchBar.resignFirstResponder()
|
|
}
|
|
|
|
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
|
|
{
|
|
if searchBar == defaultSearchBar
|
|
{
|
|
CocoaDebugSettings.shared.logSearchWordNormal = searchText
|
|
searchLogic(searchText)
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.defaultTableView.reloadData()
|
|
// }
|
|
}
|
|
else if searchBar == rnSearchBar
|
|
{
|
|
CocoaDebugSettings.shared.logSearchWordRN = searchText
|
|
searchLogic(searchText)
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.rnTableView.reloadData()
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
CocoaDebugSettings.shared.logSearchWordWeb = searchText
|
|
searchLogic(searchText)
|
|
|
|
// dispatch_main_async_safe { [weak self] in
|
|
self.webTableView.reloadData()
|
|
// }
|
|
}
|
|
}
|
|
}
|