• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: switching text field between editable and non-editable
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: switching text field between editable and non-editable


  • Subject: Re: switching text field between editable and non-editable
  • From: Ken Thomases <email@hidden>
  • Date: Wed, 31 May 2017 15:13:29 -0500

On May 31, 2017, at 1:51 PM, J.E. Schotsman <email@hidden> wrote:
>
> I have a hard time achieving what the message title says.
> Depending on user settings I want a text field to be either editable or non-editable.
>
> I’ve tried this:
>
> if makeEditable
> 	{		myTextField.isEditable = false
> 			myTextField.drawsBackground = false }
> else
> 	{		myTextField.isEditable = true
> 			myTextField.drawsBackground = true }
>
> Setting the editable property has the desired effect, but setting drawsBackground has no effect.
> Also I need to move the focus to another control (if myTextField has focus) or else the insertion point indicator keeps blinking.
> I’ve tried this:
>
> 			if  myTextField.window!.firstResponder === myTextField
> 				{
> 				myTextField.window!.selectPreviousKeyView(nil)
> 				}
>
> but no cigar.

Well, the window's first responder will never be the text field.  When a text field has focus, it's not actually the text field that is first responder.  A special text _view_, known as the field editor, is added to the window's view hierarchy in front of the text field and it is the actual first responder and handles the editing.  If you need to know if a given text field has the focus, you need to use code similar to that shown in Listing 3-8 under Determining First-Responder Status[1] in the Cocoa Event Handling Guide: Event Handling Basics.

If you want to end editing, you should use code similar to that shown in the docs for the endEditing(for:) method[2] of NSWindow.  You can try using selectPreviousKeyView() instead of the call to makeFirstResponder(_:) in those docs, but the problem is that it doesn't return whether it was successful or not.  So, you would try it and then check the first responder again.

[1] https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/EventOverview/EventHandlingBasics/EventHandlingBasics.html#//apple_ref/doc/uid/10000060i-CH5-SW23
[2] https://developer.apple.com/reference/appkit/nswindow/1419469-endediting

> firstResponder always is some button even when I see the insertion point indicator blinking.

That seems unlikely.

Regards,
Ken

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: switching text field between editable and non-editable
      • From: Jonathan Mitchell <email@hidden>
References: 
 >switching text field between editable and non-editable (From: "J.E. Schotsman" <email@hidden>)

  • Prev by Date: Re: switching text field between editable and non-editable
  • Next by Date: KVO - deallocation with observers attached
  • Previous by thread: Re: switching text field between editable and non-editable
  • Next by thread: Re: switching text field between editable and non-editable
  • Index(es):
    • Date
    • Thread