0

我曾经让我的UIView那个与下面的几个代表一起工作得很好。现在我把它UIViewIB变成了一个UIScrollView(现在用作主视图)。

由于我已更改为UIScrollView我的活动代表,例如下面的那些代表不再工作。比如键盘,我也有一个可以移动的元素,而不仅仅是静态的。

我从 IB 中分配了我能想到的所有代表,并做了我知道的大部分事情。但我对为什么事件没有被触发的想法已经不多了......

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

谁能指出我正确的方向?

- (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];
4

1 回答 1

1

我建议您子类化您的 UIScrollView 对象并在其中添加您的触摸事件,如下所示。

画布对象.h

#import <UIKit/UIKit.h>

@interface canvasObject : UIScrollView 

@end

画布对象.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在界面构建器中使用身份检查器链接到新的滚动视图子类,如下所示。

在此处输入图像描述

于 2013-06-18T22:06:31.020 回答