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
链接到新的滚动视图子类,如下所示。