我正在使用StoryBoard中的iPhone应用程序。它中有一个UIScrollView
。在其中,它有一个SliderView
,这是我编写的自定义子类,派生自UIView
。
在SliderView
内部,我正在执行此方法:
// Inside SliderView.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// whenever someone touches inside of SliderView, this method fires
}
这是我的问题。在我的StoryBoard中,我想禁用UIScrollView
的弹性垂直滚动。
通常情况下,这很容易。假设我已将UIScrollView
作为IBOutlet
连接到应用程序的主ViewController中,我可以将其粘贴到该文件中:
// Inside ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView.bounces = NO;
}
不幸的是,这并不容易,因为我希望只有在touchesBegan
被解雇时才会发生这种禁用。
所以我在这里完全难倒:如何让SliderView.m文件与ViewController.m文件通信?
答案 0 :(得分:0)
使用委托:
<强> SliderView.h 强>
// SliderView.h
@protocol SliderViewDelegate <NSObject>
@optional
- (void) isScrollViewToBounce:(BOOL)isBounce;
@end
@interface SliderView : UIView
@property (nonatomic, weak) id <SliderViewDelegate> sliderViewDelegate;
@end
<强> SliderView.m 强>
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.sliderViewDelegate isScrollViewToBounce:NO];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self.sliderViewDelegate isScrollViewToBounce:YES];
}
<强> ViewController.m 强>
#import "SliderView.h"
@interface ViewController () <SliderViewDelegate>
@end
viewDidLoad()
方法
- (void)viewDidLoad {
[super viewDidLoad];
self.sliderView setSlideViewDelegate:self];
}
在ViewController中创建Delegate方法:
- (void) isScrollViewToBounce:(BOOL)isBounce {
self.scrollView.bounces = isBounce;
}
另外请不要忘记删除委派
#pragma mark Memory management methods
//---------------------------------------------------------------
- (void)dealloc {
// Release resources here.
[self.scrollView setSliderViewDelegate:nil]
}