Skip to content

Instantly share code, notes, and snippets.

@sushito
Last active August 29, 2015 14:23
Show Gist options
  • Select an option

  • Save sushito/955258626d0fe10fe3b7 to your computer and use it in GitHub Desktop.

Select an option

Save sushito/955258626d0fe10fe3b7 to your computer and use it in GitHub Desktop.
import UIKit
import XCPlayground
extension UIView {
public override func canBecomeFirstResponder() -> Bool {
return true
}
var firstSubview: UIView? {
if let f = self.subviews.first {
return f
} else {
return nil
}
}
var firstResponder: UIView? {
if self.isFirstResponder() {
return self
}
for subview in self.subviews {
if let fr = subview.firstResponder /*as UIView? -- FIX */ {
print("-")
//assert(fr != nil, "THIS SHOULD NOT HAPPEN BUT DOES")
return fr
}
}
return nil
}
func findFirstResponder() -> UIView? {
if self.isFirstResponder() {
return self
}
for subview in self.subviews {
if let fr = subview.findFirstResponder() {
print("+")
//assert(fr != nil, "WORKS FINE")
return fr
}
}
return nil
}
}
"ok"
var v = UIView()
XCPShowView("v", view: v)
v.addSubview(UIView())
v.backgroundColor = UIColor.redColor()
v.frame = CGRectMake(0,0,200,200)
v.becomeFirstResponder()
v.firstSubview?.becomeFirstResponder()
v.findFirstResponder()
v.firstResponder
v.subviews.first!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment