我有一个 UIView 作为小部件的容器(UIViewController 子类)。我能够将简单的 UIButtons 添加到 UIView 容器并让拖放功能正常工作,但是当我尝试从添加到 UIView 容器的 Widget 拖放 UIButton 时遇到了问题。当我尝试与按钮交互时,除了默认的触摸行为之外什么都没有发生。
在这种情况下我是否应该使用委托,告诉我的小部件按钮 UIView 容器将是处理拖放的容器?
我正在容器的 ViewController 中添加小部件,其中包含以下内容:
// Widget is a UIViewController subclass, WidgetTestViewController is a Widget subclass
Widget *testWidget = [[WidgetTestViewController alloc] initWithNibName:@"WidgetTest" bundle:nil];
[testWidget.widgetButton addTarget:self action:@selector(widgetDrag:forEvent:) forControlEvents:UIControlEventTouchDragInside];
[containerView addSubview:testWidget.view];
testWidget.view.frame = frame;
我正在通过这个函数处理容器的 ViewController 中的拖动:
- (IBAction)widgetDrag:(id)sender forEvent:(UIEvent *)event {
CGPoint point = [[[event allTouches] anyObject] locationInView:containerView];
UIControl *control = sender;
control.center = point;
}