Skip to content

Instantly share code, notes, and snippets.

@RodolfoAntonici
Last active April 23, 2018 20:54
Show Gist options
  • Save RodolfoAntonici/cf1b42abe371b7adb56d9d49436c0b8c to your computer and use it in GitHub Desktop.
Save RodolfoAntonici/cf1b42abe371b7adb56d9d49436c0b8c to your computer and use it in GitHub Desktop.
//
// 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