gpt4 book ai didi

ios - UIScrollView 不响应委托(delegate)

转载 作者:行者123 更新时间:2023-11-29 03:49:54 29 4
gpt4 key购买 nike

我曾经有我的 UIView 与下面的几个代表一起工作得很好。现在,我将 UIViewIB 更改为 UIScrollView(现在用作主视图)。

自从我更改为 UIScrollView 后,我的事件委托(delegate)(如下所示)不再起作用。例如键盘,我还有一个可以移动的元素,而不仅仅是静态的。

我分配了我能想到的所有 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];

最佳答案

我建议您对 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 链接到新的 ScrollView 子类,如下所示。

enter image description here

关于ios - UIScrollView 不响应委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179446/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com