We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hello together,
this is my code, which works fine for Textfields, but is there an solution for TextViews?
`import UIKit
@objc protocol ACTextFieldDelegate{ func dataForPopoverInTextField(textField: ACTextField) -> [Dictionary<String, AnyObject>] optional func textFieldDidEndEditing(textField: ACTextField, withSelection data: Dictionary<String,AnyObject>) optional func textFieldShouldSelect(textField: ACTextField) -> Bool }
public class ACTextField: UITextView, UITextViewDelegate, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate {
var mDelegate : ACTextFieldDelegate? var tableViewController : UITableViewController? var data = [Dictionary<String, AnyObject>]() @IBInspectable var popoverBackgroundColor : UIColor = UIColor(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 1.0) @IBInspectable var popoverSize : CGRect? @IBInspectable var seperatorColor : UIColor = UIColor(white: 0.95, alpha: 1.0) /*override init(frame: CGRect) { super.init(frame: frame) }*/ /*required public init?(coder aDecoder: NSCoder){ super.init(coder: aDecoder) }*/ override public func layoutSubviews(){ super.layoutSubviews() let str : String = self.text! if (str.characters.count > 0) && (self.isFirstResponder()) { data = mDelegate!.dataForPopoverInTextField(self) self.provideSuggestions() } else{ if let table = self.tableViewController{ if table.tableView.superview != nil{ table.tableView.removeFromSuperview() self.tableViewController = nil } } } } override public func resignFirstResponder() -> Bool{ UIView.animateWithDuration(0.3, animations: ({ self.tableViewController!.tableView.alpha = 0.0 }), completion:{ (finished : Bool) in self.tableViewController!.tableView.removeFromSuperview() self.tableViewController = nil }) self.handleExit() return super.resignFirstResponder() } func provideSuggestions(){ if self.applyFilterWithSearchQuery(self.text!).count > 0 { let tapRecognizer = UITapGestureRecognizer(target: self, action: "tapped:") tapRecognizer.numberOfTapsRequired = 1 tapRecognizer.cancelsTouchesInView = false tapRecognizer.delegate = self self.superview!.addGestureRecognizer(tapRecognizer) self.tableViewController = UITableViewController() self.tableViewController!.tableView.delegate = self self.tableViewController!.tableView.dataSource = self self.tableViewController!.tableView.backgroundColor = self.popoverBackgroundColor self.tableViewController!.tableView.separatorColor = self.seperatorColor if let frameSize = self.popoverSize{ self.tableViewController!.tableView.frame = frameSize } else{ var frameForPresentation = self.frame frameForPresentation.origin.y += self.frame.size.height frameForPresentation.size.height = 150 frameForPresentation.size.width = self.frame.size.width self.tableViewController!.tableView.frame = frameForPresentation } var frameForPresentation = self.frame frameForPresentation.origin.y += self.frame.size.height frameForPresentation.size.height = 150 frameForPresentation.size.width = self.frame.size.width tableViewController!.tableView.frame = frameForPresentation //self.superview!.addSubview(tableViewController!.tableView) let aView = tableViewController!.tableView var frame = aView.frame frame.origin = self.superview!.convertPoint(frame.origin, toView: nil) aView.frame = frame self.window!.addSubview(aView) self.tableViewController!.tableView.alpha = 0.0 UIView.animateWithDuration(0.3, animations: ({ self.tableViewController!.tableView.alpha = 1.0 }), completion:{ (finished : Bool) in }) } } func tapped (sender : UIGestureRecognizer!){ if let table = self.tableViewController{ if !CGRectContainsPoint(table.tableView.frame, sender.locationInView(self.superview)) && self.isFirstResponder(){ self.resignFirstResponder() } } } public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ let count = self.applyFilterWithSearchQuery(self.text!).count if count == 0{ UIView.animateWithDuration(0.3, animations: ({ self.tableViewController!.tableView.alpha = 0.0 }), completion:{ (finished : Bool) in if let table = self.tableViewController{ table.tableView.removeFromSuperview() self.tableViewController = nil } }) } return count } public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier("MPGResultsCell") as UITableViewCell! if cell == nil { cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MPGResultsCell") } cell.backgroundColor = UIColor.clearColor() let dataForRowAtIndexPath = self.applyFilterWithSearchQuery(self.text!)[indexPath.row] let displayText : AnyObject? = dataForRowAtIndexPath["DisplayText"] cell.textLabel!.text = displayText as? String cell.detailTextLabel!.text = "SubbDetails" return cell } public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ //self.text = self.applyFilterWithSearchQuery(self.text!)[indexPath.row]["DisplayText"] self.resignFirstResponder() } func applyFilterWithSearchQuery(filter : String) -> [Dictionary<String, AnyObject>] { let filteredData = data.filter({ if let match : AnyObject = $0["DisplayText"]{ return (match as! NSString).lowercaseString.hasPrefix((filter as NSString).lowercaseString) } else{ return false } }) return filteredData } func handleExit(){ if let table = self.tableViewController{ table.tableView.removeFromSuperview() } if ((mDelegate?.textFieldShouldSelect?(self)) != nil){ if self.applyFilterWithSearchQuery(self.text!).count > 0 { let selectedData = self.applyFilterWithSearchQuery(self.text!)[0] let displayText : AnyObject? = selectedData["DisplayText"] self.text = displayText as? String mDelegate?.textFieldDidEndEditing?(self, withSelection: selectedData) } else{ mDelegate?.textFieldDidEndEditing?(self, withSelection: ["DisplayText":self.text!, "CustomObject":"NEW"]) } } }
} `
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Hello together,
this is my code, which works fine for Textfields, but is there an solution for TextViews?
`import UIKit
@objc protocol ACTextFieldDelegate{
func dataForPopoverInTextField(textField: ACTextField) -> [Dictionary<String, AnyObject>]
optional func textFieldDidEndEditing(textField: ACTextField, withSelection data: Dictionary<String,AnyObject>)
optional func textFieldShouldSelect(textField: ACTextField) -> Bool
}
public class ACTextField: UITextView, UITextViewDelegate, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate {
}
`
The text was updated successfully, but these errors were encountered: