Disabling user input for UITextfield in swift

IosSwiftUitextfieldEditing

Ios Problem Overview


pretty trivial question, I know. But I can not find anything online.

I need to disable the user from being able to edit the text inside of a text field. So that when the click on the text, a keyboard doesn't show up.

Any ideas?

A programmatic solution or if it is possible through storyboards would be great.

Ios Solutions


Solution 1 - Ios

Try this:

Swift 2.0:

textField.userInteractionEnabled = false

Swift 3.0:

textField.isUserInteractionEnabled = false

Or in storyboard uncheck "User Interaction Enabled"

enter image description here

Solution 2 - Ios

Another solution, declare your controller as UITextFieldDelegate, implement this call-back:

@IBOutlet weak var myTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    myTextField.delegate = self
}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    if textField == myTextField {
        return false; //do not show keyboard nor cursor
    }
    return true
}

Solution 3 - Ios

In storyboard you have two choise:

  1. set the control's 'enable' to false.

enter image description here

  1. set the view's 'user interaction enable' false

enter image description here

The diffierence between these choise is:

the appearance of UITextfild to display in the screen.

enter image description here

  1. First is set the control's enable. You can see the backgroud color is changed.
  2. Second is set the view's 'User interaction enable'. The backgroud color is NOT changed.

Within code:

  1. textfield.enable = false
  2. textfield.userInteractionEnabled = NO

Updated for Swift 3

  1. textField.isEnabled = false
  2. textfield.isUserInteractionEnabled = false

Solution 4 - Ios

If you want to do it while keeping the user interaction on. In my case I am using (or rather misusing) isFocused

self.myField.inputView = UIView()

This way it will focus but keyboard won't show up.

Solution 5 - Ios

I like to do it like old times. You just use a custom UITextField Class like this one:

//
//  ReadOnlyTextField.swift
//  MediFormulas
//
//  Created by Oscar Rodriguez on 6/21/17.
//  Copyright © 2017 Nica Code. All rights reserved.
//

import UIKit

class ReadOnlyTextField: UITextField {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        // Avoid keyboard to show up
        self.inputView = UIView()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
        // Avoid keyboard to show up
        self.inputView = UIView()
    }
    
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    	// Avoid cut and paste option show up
        if (action == #selector(self.cut(_:))) {
            return false
        } else if (action == #selector(self.paste(_:))) {
            return false
        }
        
        return super.canPerformAction(action, withSender: sender)
    }

}

Solution 6 - Ios

In swift 5, I used following code to disable the textfield

override func viewDidLoad() {
   super.viewDidLoad()
   self.textfield.isEnabled = false
   //e.g
   self.design.isEnabled = false
}

Solution 7 - Ios

Swift 4.2 / Xcode 10.1:

Just uncheck behavior Enabled in your storyboard -> attributes inspector.

Solution 8 - Ios

you can use UILabel instead if you don't want the user to be able to modify anything in your UITextField

A programmatic solution would be to use enabled property:

yourTextField.enabled = false

A way to do it in a storyboard:

Uncheck the Enabled checkbox in the properties of your UITextField

enter image description here

Solution 9 - Ios

textField.isUserInteractionEnabled = false

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMatt SpoonView Question on Stackoverflow
Solution 1 - IosVladView Answer on Stackoverflow
Solution 2 - IosDuyen-HoaView Answer on Stackoverflow
Solution 3 - IosHugoView Answer on Stackoverflow
Solution 4 - Iosjeet.chanchawatView Answer on Stackoverflow
Solution 5 - Iosmld.oscarView Answer on Stackoverflow
Solution 6 - IosMohammad MuddasirView Answer on Stackoverflow
Solution 7 - IosFRIDDAYView Answer on Stackoverflow
Solution 8 - IosNovargView Answer on Stackoverflow
Solution 9 - IosHuy QuangView Answer on Stackoverflow