开发者

Using UITouch To Drag A UITextField Around The Screen on iPhone

开发者 https://www.devze.com 2023-02-01 17:41 出处:网络
I am developing a sample application, where I have a situation for moving a UITextFields, UILab开发者_开发问答els etc., across the screen. I am not able to find any resource for implementing this.

I am developing a sample application, where I have a situation for moving a UITextFields, UILab开发者_开发问答els etc., across the screen. I am not able to find any resource for implementing this.

I want to implement like this for a UITextField


Since you have an excellent tutorial on dragging already, I will assume your problem is the keyboard that comes up when you try to drag a UITextField instead of a UIView. The solution should be pretty simple: myTextField.userInteractionEnabled = NO; - that should disable user interaction and make it "read only". Perhaps have an edit mode where all text fields get this flag set. If it causes trouble, then add the textField to a UIView and then set the userInteractionEnabled to false. Then you can drag the UIView and it will drag the text field with it.


I followed Michael's suggestion and got the solution.I have given the code snippets below which will be useful for those who need to implement the same.

Steps:

Choose windows based application,then create a UIViewController subclass and add it to the window in the appdelegate file.

In the XIB of the viewcontroller class you created add UIViews and add the controls like textfield etc.,to the UIViews that you have created.We are going to move these views only,so add IBOutlets in the .h file of the view controller subclass and map them to the IB accordingly.

Sample Code

appdelegate.h

#import <UIKit/UIKit.h>
#import "MyView.h"

@interface MyAppDelegate : NSObject <UIApplicationDelegate> {

UIWindow *window;
MyView *viewController;
 }

@property (nonatomic, retain) IBOutlet UIWindow *window;
@end

appdelegate.m

#import "MyAppDelegate.h"


@implementation MyAppDelegate

@synthesize window;


- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    // Override point for customization after application launch.
    viewController=[[MyView alloc]init];
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

}

- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}


@end

viewcontroller.h

#import <UIKit/UIKit.h>


@interface MyView : UIViewController {

    IBOutlet UIView *textFieldView;
    IBOutlet UIView *labelView;

}

@end

viewcontroller.m

#import "MyView.h"


@implementation MyView


- (void)viewDidLoad {

    [self.view addSubview:textFieldView];
    [self.view addSubview:labelView];
    [super viewDidLoad];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    // get touch event
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];

    if ([touch view] == textFieldView) {
        // move the image view
        textFieldView.center = touchLocation;
    }
    if ([touch view] == labelView) {
        // move the image view
        labelView.center = touchLocation;
    }

}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}


@end

Thank u all.Have a niece time.

0

精彩评论

暂无评论...
验证码 换一张
取 消