Last active
April 23, 2018 20:54
-
-
Save RodolfoAntonici/cf1b42abe371b7adb56d9d49436c0b8c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// InputAccessoryView.swift | |
// | |
// Created by Rodolfo Antonici on 23/08/16. | |
// Copyright © 2016 RAntonici. All rights reserved. | |
// | |
import UIKit | |
class InputAccessoryView: UIView { | |
private var toolbar = UIToolbar() | |
private var rightBarButton: UIBarButtonItem! | |
weak var textField: UITextField? { | |
didSet{ | |
guard let textField = textField else{ | |
return | |
} | |
textField.inputAccessoryView = self | |
var title = "" | |
switch textField.returnKeyType { | |
case .default: | |
title = "Done" | |
case .go: | |
title = "Go" | |
case .google: | |
title = "Search" | |
case .join: | |
title = "Join" | |
case .next: | |
title = "Next" | |
case .route: | |
title = "Route" | |
case .search: | |
title = "Search" | |
case .send: | |
title = "Send" | |
case .yahoo: | |
title = "Search" | |
case .done: | |
title = "Done" | |
case .emergencyCall: | |
title = "Emergency Call" | |
case .continue: | |
title = "Done" | |
} | |
self.rightBarButton.title = title | |
} | |
} | |
override var frame: CGRect { | |
didSet { | |
self.updateLayerFrames() | |
} | |
} | |
convenience init(frame: CGRect, withTextField textField: UITextField) { | |
self.init(frame: frame) | |
self.textField = textField | |
} | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
self.backgroundColor = .clear | |
self.toolbar.barTintColor = .darkGray | |
self.toolbar.tintColor = .blue | |
self.addSubview(self.toolbar) | |
self.rightBarButton = UIBarButtonItem(title: "return", style: .plain, target: self, action: #selector(rightButtonDidReceiveTouchUpInside)) | |
let flexSpacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) | |
self.toolbar.items = [flexSpacer, self.rightBarButton] | |
self.updateLayerFrames() | |
} | |
@objc func rightButtonDidReceiveTouchUpInside() { | |
if let delegate = self.textField?.delegate { | |
let _ = delegate.textFieldShouldReturn!(self.textField!) | |
} | |
} | |
required init(coder: NSCoder) { | |
super.init(coder: coder)! | |
} | |
func updateLayerFrames() { | |
self.toolbar.frame = CGRect(origin: CGPoint.zero, size: self.frame.size) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment