[iPhone SDK] Events Filtered: UIControl Subclass Inside a UITableViewCell

I have a control derived from UIControl that needs to respond to drags, similar in some respects to a UISlider. Touch events are handled by implementations of touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent, and touchesCancelled:withEvent:. The control works very well, unless I make it a subview of a UITableViewCell. Once I do that, I'll get the touchesBegan:withEvent: call, but often no others. Thus, the control responds to an initial touch, but will not respond to drags. Even setting the exclusiveTouch property within the touchesBegan:withEvent: method doesn't help; the events are never reaching my code.
Interestingly, I can drop a UISlider in my table and it responds to touch events just fine. So obviously there's a way to get these events delivered... but I'm suspecting that the UIScrollView that UITableView inherits from is interfering with the delivery of the touch events. The reference for UIScrollView talks about how to override its event interception in subclasses, but if UISlider can get away without a special subclassed container, well, by golly, I'd like to do that, too.
This may have a simple solution ("hey Dave, just set this property"), but so far it's eluded me.
So, does anyone here understand UITableView mechanics enough to guess where the touch messages might be getting filtered, and how to tell the responsible class to knock it off? I will accept source code for UISlider as an answer.

Hello, there is a much better solution:
First let me explain what happens:
The UITableView extends from UIScrollView. UIScrollView intercepts all the events to make the decision if it is a scroll or not, if not it passes the event to the subviews. (Except when you have a UIslider)
The solution is to extend UITableView and override this method:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *v = [self viewWithTag:999]; //999 is the tag of your subview, that you want to capture events
CGPoint convertedPoint = [self convertPoint:point toView:v];
// If the touch is inside the view, let the view handle it
if ([v pointInside:convertedPoint withEvent:event]) {
return v;
} else {
return [super hitTest:point withEvent:event];
When you Extend UISlider the hitTest returns the sliderview on a touch event but not when you extend UIControl. That I can not explain.
Overriding the hitTest you can test if the point argument is inside in your view (converting to its coordinates) and Return it the view like what happens in a UISlider.
If someone know why the UISlider is an exception in this hitTest method, please tell us.
Hope this helps you people, trying to capture touches in a UITableView or UIScrollView without the interference of the scrool detection.
Best regards, João
http://www.nanoappz.com/

Similar Messages

  • Error -2048: Quicktime refuses to open Jobs iPhone SDK Presentation

    Hi,
    I have had this happen to me during the special iMac event last summer and currently with the iPhone SDK event. I get the error message:
    "Error -2048: Couldn't open the file m08770365506i_650ref.mov because it is not a file that Quicktime understands."
    I have tried using Firefox, Internet Explorer and Safari. Same problem. I tried reinstalling iTunes+Quicktime. I still get the error. Any ideas?
    Mike
    PS I have screenshots if that helps

    I was afraid of that.. :-(
    Yeah... well, I've tried to import the files to iTunes, both through drag'n drop and by Files/Add to Library but nothing, zip, zero happens. Not even an error message appears. I have no problem with adding mpeg4 files but I get no reaction when trying to add the wma's...

  • Pinch/Flick Gesture Events in iPhone SDK

    just a simple question to the iPhone SDK.
    is there a simple possibility to read a pinch or flick gesture without programming and interpreting a multitouch sequence myself?
    Im looking for methods i can simply override like OnPinch or OnFlick.
    Ive searched for quite a while and cant find anything like this although im sure it must be available.

    There is no built in function to read a pinch or a flick. You have to implement it yourself using:
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
    Depending what you want to do it may require some math to accomplish what you want to do. I had to dig into some old school books to make it work.

  • My Iphone calendar events are not showing up in iCal when I sync? Syncing has not been an issue till today?

    My Iphone calendar events are not showing up in iCal when I sync? Syncing has not been an issue till today?

    I found this tip from a 2011 discussion on the same topic.
    Open iCal and backup or export your entries. Make a note of the fie name and location, you're going to need them in a minute. Once your backup/export is completed, close the iCal application.
    Open Finder and remove everything inside the "Username/Library/Calendars" folder. For instance, if your username is "Joe", then move everything inside the "Joe/Library/Calendars" folder.
    Open the iSync application. It's located in the "/Applications/" folder. Once iSync is opened, go into the iSync Preferences (iSync -> Preferences) and push/click the "Reset Sync History" button. Then, close the iSync application.
    Re-Open the iCal application and Import (File -> Import) a new calendar. When prompted, use your notes from Step #1 to select the file your created earlier. Once completed, close the iCal application (you should have all of your calendar entries back.)
    Open the iTunes application and connect your Apple iPhone to the computer.
    Within the Advanced section of the Info tab for the Apple iPhone, check the box the overwrites/replaces the Calendar data on the Apple iPhone.
    Click the Apple/Sync button. New, modified and deleted entries should now be syncing correctly.
    That's it! You should be all set and iTunes, iCal and our Apple iPhone should all be playing nicely as friends again. We've used the exact method to repair our own Apple iPhone at least once... maybe even twice.

  • IPhone SDK 2.2 memory corruption

    Hello. I'm working on an application for iPhone SDK 2.2 and seem to be having weird memory corruption problems. Not necessarily leaks because using Instruments shows my memory stamp never going above about 1.8 megs. The nature of the app is a database of animals so I'm constantly loading and unloading sounds and images. None of the objects are very large (at most I'll have 4 800k pngs loaded at once) and I've checked and rechecked my alloc/retain/release and everything is in order (hence no memory usage increase). However...after using the application for a while I'll notice strange behavior. For example:
    1) we have a UILabel as the title for each page. After a while the font size of this will change.
    2) I have several screens with a subclassed UIScrollView where images are loaded and then added to. The problem shows itself here by the images not showing up. there's no crash, stepping through the debugger shows that the image loads up fine, it's just that the image is not there.
    3) I have a UILabel at the top of an animal description screen, which in the nib file is called "Animal Name" by default. This will change to show "Animal Name" at the top.
    I've removed all audio in our latest build so that isn't the problem. What I'm starting to suspect is that altering anything defined in a nib file will cause corruption. For example, the UIScrollView is defined in the nib file, and I constantly am reassigning the contents of that with a UIImageView. This UIImageView is handled within the subview class like :
    UIImageView *imgView = [[UIImageView alloc] initWithImage: [ UIImage imageWithContentsOfFile:[[NSBundle mainBundle ] pathForResource:imageToLoad ofType:@"png" ]] ];
    imgView.tag = 50;
    [self addSubview:imgView ];
    [ imgView release ];
    Then later when moving away from the screen I'll find that view's tag and remove it from the superview (since addSubView increases the retain count, the alloc+addSubView is cancelled by release+removeFromSuperView)
    I can't explain why titles that are never changed would be affected, but it must somehow be related. What I'm wondering is: are there any known issues involving modification of the contents of objects defined in Nib files? Perhaps the memory allocated when initWithNibName is restrained, then any modification of objects allocated within it can cause corruption. I'm starting to think I should just alloc and free anything modified in code and skip using nib files altogether (I reset the text on buttons for example). If this is a known issue please let me know. I'll give you more information if I can.
    Thank you

    Just download the huge SDK package and install. No need to uninstall the old SDK.

  • Downloaded iPhone SDK, ran Xcode, no option for iPhone - Mac OS only!

    Hi everyone,
    I downloaded the free iPhone SDK and ran the installer. Whenever I launch Xcode however, there is no tab for iPhone applications - only Mac OS. I took a peak inside the packages folder in the download and spotted files named "iphone SDK", so I'm confused.
    Any idea on why Xcode runs but there is no option for iPhone?
    Thanks,
    Xeno

    Hello,
    On my PowerPC G5 I have a similar issue where I installed Mac OS X 10.5.6, but after installing the iphone SDK I do not see any refs to iphone when in Xcode.
    I even tried the suggestion here:
    http://3by9.com/85/dont-have-an-intel-machine-but-want-to-code-for-the-iphone-an yway-follow-these-steps/
    This however, resulted in the same issue.
    Any suggestion on how to resolve this would be most appreciated.

  • IPhone SDK - Ideas for pop-up menus

    I have a screen where there are quite a few items which are of the multiple-choice type. In other platforms we use a combo box (pick lists) to do this.
    On the iPhone SDK the only thing that comes close is the UIPickerView which is too heavy IMHO.
    Currently i am using a full screen pop-up with a UITableView inside it for the menu items. It is functional but not cool.
    I guess i could create a view which is rendered as a pop-up and add it as a subview to the parent and make it behave like a pop-up menu.
    Has anyone tried do implement one? I would greatly appreciate your ideas on this.
    Thanks,
    -TRS
    -TRS

    "redstonegirl" <[email protected]> wrote in
    message
    news:eo0dfm$k4r$[email protected]..
    > I'm new to this, and I'm wondering if it is suggested to
    use this drop
    > down for a side menu bar. I am considering doing this
    but my menu must be
    > on the side.
    Yes, once you master the tutorial on creating these type of
    menus, you can
    have them as dropdowns, or flyouts (as they are commonly
    called when
    attached to a vertical menu system).
    Nadia
    Adobe® Community Expert : Dreamweaver
    Tutorials |SEO |Templates
    http://www.DreamweaverResources.com
    http://www.perrelink.com.au
    CSS Tutorials for Dreamweaver
    http://www.adobe.com/devnet/dreamweaver/css.html

  • [svn:fx-trunk] 9287: Fixes bug with shader-transition effects ( AnimateTransitionShader, Wipe, and CrossFade) when acting on targets that either have filters or are inside a hierarchy with filters .

    Revision: 9287
    Author:   [email protected]
    Date:     2009-08-13 15:53:43 -0700 (Thu, 13 Aug 2009)
    Log Message:
    Fixes bug with shader-transition effects (AnimateTransitionShader, Wipe, and CrossFade) when acting on targets that either have filters or are inside a hierarchy with filters. Fix was to capture the bitmap snapshot of the target without any of its own filters applied and to then use the ShaderFilter in conjunction with the target's filters during the animation.
    QE notes: Probably need more tests in this area, now that we handle it
    Doc notes: none
    Bugs: sdk-20250
    Reviewer: Jason
    Tests run: Checkintests, Mustella (spark/effects/[AnimateTransitionShader|Wipe|CrossFade])
    Is noteworthy for integration: No
    Ticket Links:
        http://bugs.adobe.com/jira/browse/sdk-20250
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransiti onShaderInstance.as

    Lots to be excited about. BUT...Just updated to 8.1 on one of my computers to test it out...
    Sadly, the following issue is NOT fixed for me. Is it with new projects only?  I haven't started a new project on 8.1 I've only opened an old project but the issue that I'm referring to which involves also a delay/freeze of anywhere from a few seconds to a MINUTE while the render bar goes from yellow to red and then back to yellow is still there. Boo.
    On the list above...
    Switching between sequences can turn the render bar red.
    This issue is incredibly easy to replicate. I really do hope it gets fixed. Here are the steps:
    1) Create two sequences with multiple short clips (the more clips the better)
    2) Make sure GPU acceleration is enabled.
    3) Add warp stabilizer to the clips in both sequences. Again, the more clips the longer the delay/freeze will be as the render bar goes from YELLOW to RED and then eventually back to YELLOW again.
    4) Hit SAVE.
    5) Now, toggle between sequences. You'll hit a short delay with a few clips stabilized and a LONG delay with lots stabilized. In my case this delay is around a full minute. The render bar will go from YELLOW to RED and then back to yellow...eventually.
    6) Toggle back to the original sequence and the delay occurs again.
    7) Once you've toggled between sequences and have gone through this delay, that's it, there is no longer a delay...UNTIL...(and here's the big kicker)...until the project is SAVED again. After that the issue returns when you toggle between sequences. Both saving manually and AUTOSAVING cause this issue. No way around it except not editing with GPU acceleration.
    Not sure what the issue is...caching issue when saving maybe? Either way, it stinks and it's still there in 8.1. Big bummer.
    Again, lots to be excited about with this release but I really was hopefully this specific issue was resolved.
    Sigh.

  • IPhone SDK: auto-rotation sets wrong bounds in view?

    Hi all,
    Can anybody confirm if this is a bug in the iPhone SDK? I have a ViewController that defines as its view a DimensionsLogger, which is a trivial subclass of UIView that just logs its frame, bounds and center properties when layoutSubviews is invoked.
    When I set this view as the root view in my application, the dimensions are logged like so (portrait mode):
    Bounds: (0.000000, 0.000000) x (320.000000, 460.000000)
    I rotate it to landscape mode and the bounds are logged:
    Bounds: (0.000000, 0.000000) x (390.000000, 390.000000)
    Bounds: (0.000000, 0.000000) x (480.000000, 300.000000)
    Then back to portrait mode:
    Bounds: (0.000000, 0.000000) x (390.000000, 390.000000)
    Bounds: (0.000000, 0.000000) x (320.000000, 460.000000)
    So far, so good.
    When I add my DimensionLogger + ViewController to a NavigationController, however, the same process (repeated several times) yields the following output:
    Bounds: (0.000000, 0.000000) x (320.000000, 416.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 346.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 358.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 358.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 346.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 346.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 358.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 358.000000)
    Bounds: (0.000000, 0.000000) x (390.000000, 346.000000)
    The bounds value never returns to the original dimensions.
    Am I missing something, or is this a bug? The practical consequence of this is that it seems impossible to combine the following 3 UI elements:
    - "anchoring" something to the bottom of a view, like a UIToolbar (NOT a tabbar)
    - Nesting that view in a UINavigationController
    - Supporting portrait and landscape interface orientation.
    Also, if I file this as a bug, is there any way to search the bug report tool to see if this has already been filed? I've logged into the tool and I see some search functionality but it only seems to search bugs I've previously filed.
    Thanks,
    Russ

    Just wanted to add that I've tried this in the simulator and on a provisioned iPod touch, same results on both.
    Russ

  • Image Filter, iPhone SDK

    Hi all,
    What should be the best way to implement Edge Detection Filter for an iPhone app?
    It seems neither Core Image nor Fragment Shader is available in iPhone.

    No. At least not publicly exposed. Core-Image is part of QuartzCore.framework, which although is present in iPhone SDK but it doesn't contain the Core-Image headers. The reason I can think of is that Core-Image filters are primarily meant to run on GPU. May be - not supported on iPhone's arm processor's. May be.
    - Vijay

  • IPhone SDK - What is the equivalent of a combo box

    I have a screen where there are quite a few items which are of the multiple-choice type. In other platforms i use a combo box (pick lists) to do this.
    On the iPhone SDK the only thing that comes close is the UIPicketView which is ugly IMHO. it takes too much real estate and too heavy.
    Is this is the only control available now?
    Also does the UIPicker come with an associated control which will launch the picker? What i mean is on other platforms and on the web there is a text field with a button with a down arrow next to it. Clicking either on the text field or the down arrow drops the list down. Is there a similar control on the iPhone which when clicked launches the picker OR do i have to create a button or a custom view which will launch the picker?
    Thanks for reading this and for your feedback.
    -TRS

    I do not believe there is an equivalent of -D in the DB JVM, a possible solution is:
    Load a properties file into the DB using Loadjava, then open this file from your Java code using Properties.load(), then iterate the properties calling System.setProperty().
    Chris

  • Photos on iPad and iPhone as Events that i have already deleted in iPhoto and can't find out how to delete?!

    Photos on iPad and iPhone as Events that i have already deleted in iPhoto and can't find out how to delete?!

    I had an album on my iPad that didn't have a delete option. I was able to finally remove everything by connecting the iPad to iTunes and going to the Photos tab. Select sync photos. It will ask you if you want to replace all photo on iPad with sync photos. Apply the setting and then un-sync photo again. It will then remove all photos on iPad starting with a clean slate.
    Be sure to backup all your photos before doing this. Hope that helps.

  • Upon syncing my iPhone and mac all of my ical and iPhone calendar events have duplicated. how can i fix this and avoid it in the future?

    upon syncing my iPhone and mac all of my ical and iPhone calendar events have duplicated. how can i fix this and avoid it in the future?

    Greetings,
    Questions:
    1. What version of the Mac OS are you running (Apple > About this Mac)?
    2. What version of the iOS are you running (Settings > About)?
    3. Do you backup your computer (http://support.apple.com/kb/HT1427)? 
    --- If you don't regularly backup your computer, now is the time to start.
    4. Do you backup your iPhone (http://support.apple.com/kb/ht1766)?
    Check the calendar list on the left hand side of iCal.  Is it that the individual events are duplicated or is it just that you have the same calendar listed more than once?  If its that you have more than 1 copy of each calendar, you can delete one of the duplicate calendars to eliminate the duplicates.
    If you find that it is the individual events that are duplicated then there are 2 options:
    1. Restore your computer iCal database or iPhone from a backup made before the duplication occurred.
    2. Use a duplication removal program (or do it by hand) to remove the duplicates: http://www.nhoj.co.uk/icaldupedeleter/
    If you have a backup made before the duplication occurred, reply back with what kind of backup you have and I'll suggest how to recover the calendars.
    To avoid this issue in the future:
    Keep regular backups.  They are your best defense against data anomalies which are a fact of life in computers (although hopefully rare).
    Keep your computer and iPhone software fully up to date (Apple > Software Update / Settings > General > Software Update).
    Make sure the date and time on your computer and iPhone are correct before you sync the two devices.
    Make sure the cable connections between the two is solid and that the cable shows no signs of physical damage.
    Hope that information helps.

  • Learning iPhone SDK - Trying to draw an image

    Although I have programmed for Mac in the last years, I have never used Mac-specific technologies as Cocoa (I have programmed more in OpenGL, SDL, and the like).
    Now I am getting started with the iPhone SDK. I'd like to do some OpenGL|ES stuff, but since it is not supported in the Simulator, and you need to join the Developer Program to test stuff on directly on the device (and admission of new members is closed right now), I am focused on other stuff right now, like using Core Graphics for drawing images on the iPhone.
    My application is based on the Cocoa Touch Application template. I left the default code except for a few changes.
    In file "UntitledAppDelegate.m", I have changed the method applicationDidFinishLaunching to:
    - (void)applicationDidFinishLaunching:(UIApplication *)application {
    window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    contentView = [[[MyView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    [window addSubview:contentView];
    [window makeKeyAndVisible];
    Then, in the MyView interface file (MyView.h), I have added the attribute "UIImageView* image;" to the class, which is declared as a property, and synthesized.
    In the class implementation (MyView.m), I have changed the method initWithFrame to:
    - (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
    self.backgroundColor = [UIColor darkGrayColor];
    image = [self loadImageView:@"box01.png"];
    [self addSubview:image];
    return self;
    loadImageView is a private method I have implemented as:
    - (UIImageView *)loadImageView:(NSString *) imageName {
    UIImage *img = [UIImage imageNamed:imageName];
    UIImageView *theView = [[UIImageView alloc] initWithImage:img];
    return theView;
    Since I have loaded the UIImage, and initialized a UIImageView with it, and the image view is added as a subview of the main view attached to the window, I thought it should be everything needed to draw an image on the screen. But nothing is visible. The screen is simply black when I run this on the Simulator. It doesn't even set the background to dark gray.
    So I need some help with this, I sure that anyone with experience in Mac programming will know how to help me.
    Thank you in advance.
    Message was edited by: Jedive

    I removed the XIB file from the project, but that didn't help. It was a problem with my inexperience with Objective-C. When accessing class properties in a method of the same class, i was not putting "self." before the property (in C++ that's redundant). For example, in the line "window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];". After adding it, it works correctly.

  • IPhone SDK CodeSign Error: Redux (latest OS X update is broken)

    This bug - http://discussions.apple.com/thread.jspa?threadID=1455699&start=0&tstart=0 - is back. My AdHoc project, which worked perfectly last week, has just stopped building, with this:
    "object file format invalid or unsuitable"
    As soon as I upgraded from 10.5.7 to 10.5.8, this bug appeared.
    However, this bug was officially fixed in 10.5.7 - so, I'm guessing here, Apple has accidentally re-created it.
    Unfortunately, I cannot add to the original post, because Apple has frozen the topic.
    So, here's a new topic to ask if anyone else is having this problem, and what they did about it - is it exactly the same as the old bug? or is it different in some way?
    I'm going to try some of the workarounds for the old bug - but hacking command line scripts isn't fun, and I'm worried I might break something even worse .

    iPhone Dev Center
    Downloads
    Read me before downloading
    If you have updated your device to iPhone OS 3.1.3 with iTunes, you must install iPhone SDK 3.1.3 in order to continue with your development.
    *iPhone SDK 3.1.3*
    iPhone SDK 3.1.3 includes the Xcode IDE, iPhone simulator, and a suite of additional tools for developing applications for iPhone and iPod touch.
    _Posted: February 2, 2010_
    Leopard Build: 9M2809a
    Snow Leopard Build: 10M2003a
    *Leopard Downloads*
    iPhone SDK 3.1.3 with Xcode 3.1.4
    iPhone SDK 3.1.3 with Xcode 3.1.4 Readme
    *Snow Leopard Downloads*
    iPhone SDK 3.1.3 with Xcode 3.2.1
    iPhone SDK 3.1.3 with Xcode 3.2.1 Readme
    *Other Downloads*
    iPhone SDK Agreement
    iPhone Configuration Utility

Maybe you are looking for