Disable/enable UIBarButtonItem base on UITextView content swift
I'm trying to grey out a UIBarButtonItem when the TextView is empty, and enable it when the TextView isn't empty.
class ViewController: UIViewController {
@IBOutlet weak var text: UITextView!
override func viewDidLoad()
super.viewDidLoad()
let newButton = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: nil)
toolbarItems = [newButton]
navigationController?.isToolbarHidden = false
I have heard suggestion about implementing an observer or implementing a TextView delegate method. Can someone please provide a concrete example.
Thank you so much.
swift uitextview uitoolbar
add a comment |
I'm trying to grey out a UIBarButtonItem when the TextView is empty, and enable it when the TextView isn't empty.
class ViewController: UIViewController {
@IBOutlet weak var text: UITextView!
override func viewDidLoad()
super.viewDidLoad()
let newButton = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: nil)
toolbarItems = [newButton]
navigationController?.isToolbarHidden = false
I have heard suggestion about implementing an observer or implementing a TextView delegate method. Can someone please provide a concrete example.
Thank you so much.
swift uitextview uitoolbar
add a comment |
I'm trying to grey out a UIBarButtonItem when the TextView is empty, and enable it when the TextView isn't empty.
class ViewController: UIViewController {
@IBOutlet weak var text: UITextView!
override func viewDidLoad()
super.viewDidLoad()
let newButton = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: nil)
toolbarItems = [newButton]
navigationController?.isToolbarHidden = false
I have heard suggestion about implementing an observer or implementing a TextView delegate method. Can someone please provide a concrete example.
Thank you so much.
swift uitextview uitoolbar
I'm trying to grey out a UIBarButtonItem when the TextView is empty, and enable it when the TextView isn't empty.
class ViewController: UIViewController {
@IBOutlet weak var text: UITextView!
override func viewDidLoad()
super.viewDidLoad()
let newButton = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: nil)
toolbarItems = [newButton]
navigationController?.isToolbarHidden = false
I have heard suggestion about implementing an observer or implementing a TextView delegate method. Can someone please provide a concrete example.
Thank you so much.
swift uitextview uitoolbar
swift uitextview uitoolbar
asked May 4 '17 at 4:10
Yiu Chung WongYiu Chung Wong
4118
4118
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Please try my code.
I used it for my project.
func textChanged(sender: NSNotification)
if emailTextField.hasText && passwordTextField.hasText
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor(r: 139, g: 0, b: 139)
else
loginButton.backgroundColor = UIColor(r: 139, g: 77, b: 139)
loginButton.isEnabled = false
and add this to viewDidload:
NotificationCenter.default.addObserver(self,selector: #selector(textChanged),name:NSNotification.Name.UITextFieldTextDidChange,object: nil)
loginButton.isEnabled = false
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f43773740%2fdisable-enable-uibarbuttonitem-base-on-uitextview-content-swift%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Please try my code.
I used it for my project.
func textChanged(sender: NSNotification)
if emailTextField.hasText && passwordTextField.hasText
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor(r: 139, g: 0, b: 139)
else
loginButton.backgroundColor = UIColor(r: 139, g: 77, b: 139)
loginButton.isEnabled = false
and add this to viewDidload:
NotificationCenter.default.addObserver(self,selector: #selector(textChanged),name:NSNotification.Name.UITextFieldTextDidChange,object: nil)
loginButton.isEnabled = false
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
add a comment |
Please try my code.
I used it for my project.
func textChanged(sender: NSNotification)
if emailTextField.hasText && passwordTextField.hasText
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor(r: 139, g: 0, b: 139)
else
loginButton.backgroundColor = UIColor(r: 139, g: 77, b: 139)
loginButton.isEnabled = false
and add this to viewDidload:
NotificationCenter.default.addObserver(self,selector: #selector(textChanged),name:NSNotification.Name.UITextFieldTextDidChange,object: nil)
loginButton.isEnabled = false
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
add a comment |
Please try my code.
I used it for my project.
func textChanged(sender: NSNotification)
if emailTextField.hasText && passwordTextField.hasText
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor(r: 139, g: 0, b: 139)
else
loginButton.backgroundColor = UIColor(r: 139, g: 77, b: 139)
loginButton.isEnabled = false
and add this to viewDidload:
NotificationCenter.default.addObserver(self,selector: #selector(textChanged),name:NSNotification.Name.UITextFieldTextDidChange,object: nil)
loginButton.isEnabled = false
Please try my code.
I used it for my project.
func textChanged(sender: NSNotification)
if emailTextField.hasText && passwordTextField.hasText
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor(r: 139, g: 0, b: 139)
else
loginButton.backgroundColor = UIColor(r: 139, g: 77, b: 139)
loginButton.isEnabled = false
and add this to viewDidload:
NotificationCenter.default.addObserver(self,selector: #selector(textChanged),name:NSNotification.Name.UITextFieldTextDidChange,object: nil)
loginButton.isEnabled = false
edited Nov 13 '18 at 1:39
Pang
6,8991664101
6,8991664101
answered May 4 '17 at 4:14
KristoffKristoff
11829
11829
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
add a comment |
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Thank you the observer method works great. I never really knew how observer works =]
– Yiu Chung Wong
May 4 '17 at 4:49
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
Excellent solution! Well done... But use the viewWillAppear method instead of viewDidLoad. It's more sensitive than the viewDidLoad
– Mannopson
May 4 '17 at 5:48
1
1
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
yes, your're right xD
– Kristoff
May 4 '17 at 6:01
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f43773740%2fdisable-enable-uibarbuttonitem-base-on-uitextview-content-swift%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown