• 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: My Slider has spikes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: My Slider has spikes


  • Subject: Re: My Slider has spikes
  • From: Murat Konar <email@hidden>
  • Date: Thu, 12 Apr 2007 18:13:57 -0700
  • Resent-date: Thu, 12 Apr 2007 18:26:02 -0700
  • Resent-from: Murat Konar <email@hidden>
  • Resent-message-id: <email@hidden>
  • Resent-to: Dev Cocoa <email@hidden>


On Apr 12, 2007, at 6:01 PM, Ron Fleckner wrote:

I make a popup window for a slider in my app. My problem is that the slider has strange little barbs or spikes near the ends of it's 'track' and the ends of the track are squared off rather than rounded. Here's the whole code I use to create the window...

[snip]

First of all, why not use Interface Builder to construct your view hierarchy then pop that into your custom window?

Second, I'll bet what's going on is that the end caps of your slider's groove are being drawn upside down, which suggests a problem somewhere with coordinates not having the proper flipped- ness.

Yes, yes, that's it! It's fixable. Flipped-ness is surely the culprit. I've set my slider subclass to return NO as I wanted to easily track the mouse position and move the slider as the mouse moved so the user doesn't have to click and drag. However, if my slider returns YES for -isFlipped, I get a comical situation where the slider moves in the opposite direction to the mouse, but at least the spikes have gone. Well spotted, Murat.


What I'm trying to do:

Have the slider move in concert with the mouse without having to click and drag.

The slider reads -mouseMoved: events while it's on screen and sets it's value (knob position) according to the mouse's position. There probably is a way to get the mouse position and set the slider's value in the -isFlipped YES situation, but my maths is not good. By setting -isFlipped to NO, I can simply use the location.y of the -mouseMoved: event.

Events (like mouse moved events) report their location in window coordinates. You can convert from window coordinate system to any subview coordinate system like this (typed in mail, etc):


NSPoint localEventCoord = [self convertPoint: [mouseMovedEvent locationInWindow] fromView:nil];

This will account for any flippage. And you don't need any maths.


The reason I used code and not IB was because IB wouldn't let me make the window narrow enough for my purposes. There probably is a way to do it in IB, but rather than research the answer, it seemed simpler and quicker to just write that fairly small bit of code.

Build your view hierarchy in IB without putting it in a window. Create your window in code then add the view from the nib to the window's content view. Or just build the whole hierarchy in IB (including the window) and resize it after loading it.


_______________________________________________

Cocoa-dev mailing list (email@hidden)

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


  • Prev by Date: Re: My Slider has spikes
  • Next by Date: objectFileHasPlusLoadMethod
  • Previous by thread: Re: My Slider has spikes
  • Next by thread: [SOLVED] initWithWindowNibName returns null window
  • Index(es):
    • Date
    • Thread