For some reason, even though I disable the auto-cap and auto-correct of my UITextField, it\'s still capitalizing the first letter of my input.
Here is the code:
Updated the correct answer for Swift 5
    textField.autocorrectionType = .no
    textField.autocapitalizationType = .none
    textField.spellCheckingType = .no
You're setting autocorrectionType to FALSE as if it were a BOOL, but it actually has type UITextAutocorrectionType.  So FALSE is being interpreted as UITextAutocorrectionTypeDefault, which means that autocorrection is probably enabled.  
I bet it found the name "Phil" in your address book and is autocorrecting the capitalization to match.
If you wish to disable Auto-Cap/autocorrect on a UITextField for whole project,
then make a class which will inherit the UITextField class and init method set the autoCorrectionType to "no".
Class AppTextField: UITextField {
     override init(frame: CGRect) {
         super.init(frame: frame)
         //setting the autocorrection to no
          self.autocorrectionType = .no
      }
}
Then in storyboard set the cusotom class for textfield to AppTextField.
Swift 2:
textField.autocorrectionType = .No
textField.autocapitalizationType = .None
Objective - C
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    textField.autocorrectionType = FALSE; // or use  UITextAutocorrectionTypeNo
    textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
}
Swift
func textFieldDidBeginEditing(textfield : UITextField)
{
    textField.autocorrectionType = .No
    textField.autocapitalizationType = .None
    textField.spellCheckingType = .No
}
Swift3
  func textFieldDidBeginEditing(_ textField : UITextField)
{
    textField.autocorrectionType = .no
    textField.autocapitalizationType = .none
    textField.spellCheckingType = .no
}
yourTextFieldName.autocorrectionType = UITextAutocorrectionTypeNo;
yourTextFieldName.autocapitalizationType = UITextAutocapitalizationTypeNone;