我正在开发一个示例应用程序,我可以在屏幕上移动UITextFields,UILabels等。我无法找到实现此功能的任何资源。请建议我解决此问题。< / p>
我想为UITextField实现类似this
提前感谢所有人。 所有stackoverflow用户的圣诞快乐和高级新年愿望
答案 0 :(得分:2)
由于您已经有一个很好的拖动教程,我将假设您的问题是当您尝试拖动UITextField而不是UIView时出现的键盘。解决方案应该非常简单:myTextField.userInteractionEnabled = NO;
- 应该禁用用户交互并使其“只读”。也许有一个编辑模式,其中所有文本字段都设置此标志。如果它导致问题,则将textField添加到UIView,然后将userInteractionEnabled设置为false。然后你可以拖动UIView,然后用它拖动文本字段。
希望有帮助,祝你节日快乐!
答案 1 :(得分:2)
我遵循迈克尔的建议并得到了解决方案。我已经给出了下面的代码片段,这对那些需要实现它的人来说非常有用。
<强>步骤:强>
选择基于Windows的应用程序,然后创建一个UIViewController子类并将其添加到appdelegate文件中的窗口。
在viewcontroller类的XIB中,您创建了添加UIViews并将控件(如textfield等)添加到您创建的UIViews。我们将仅移动这些视图,因此在.h文件中添加IBOutlets查看控制器子类并相应地将它们映射到IB。
示例代码
<强> 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
谢谢大家。有侄女的时间。