UIScrollView没有响应委托

我曾经有我的UIView工作正常与几个代表下面的一些。 现在我从IB更改UIView是一个UIScrollView (现在用作主视图)。

由于我已经更改为UIScrollView我的事件代表,如下面的那些不工作了。 比如键盘,还有我可以移动的元素,而不是静态的。

我把所有代表都分配给了我能想到的IB,并做了我所知道的大部分事情。 但我为什么没有触发事件的想法用尽…

如果我通过做cmd + z回到旧的UIView他们的工作。

任何人都可以指出我在正确的方向?

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event { [self.view endEditing:TRUE]; } - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { // register for keyboard notifications return YES; } 

编辑 – 补充答案:

@Wezly答案是完全有效的。 但是,如果有人不想子类的UIScrollView和只使用UITextFieldDelegate方法。

另一种做法是添加到viewDidLoad

注意:你仍然无法访问许多东西,但是它的另一个解决方法

 /// /// DelegateNotifications [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window]; // register for keyboard notifications [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:self.view.window]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidEndEditing:) name:UITextFieldTextDidEndEditingNotification object:self.view.window]; 

我build议你inheritance你的UIScrollView对象,并像下面添加你的触摸事件

canvasObject.h

 #import <UIKit/UIKit.h> @interface canvasObject : UIScrollView @end 

canvasObject.m

 #import "canvasObject.h" @implementation canvasObject - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.canCancelContentTouches = false; } return self; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event { //Do Stuff } - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { return YES; } @end 

然后使用界面生成器中的身份检查器将您的UIScrollView链接到新的滚动视图子类,如下所示。

在这里输入图像说明