IOS Toolbarbutton项目不触发带有滚动条的动作

Posted

技术标签:

【中文标题】IOS Toolbarbutton项目不触发带有滚动条的动作【英文标题】:IOS Toolbarbutton item not triggering action with scroll bar 【发布时间】:2013-09-18 07:50:16 【问题描述】:

我也为 Scrollview(8images) + Toolbar 编写了代码。当我尝试单击工具栏按钮项时,滚动视图没有按预期返回。下面是代码。

当我单击工具栏按钮时,没有触发“IBAction clickprjinfo”的操作,我已通过连接检查器中的 Barbuttonitem 确认对此 IBACTION 完成了“SentAction”。

在运行时,当我单击按住工具栏按钮 + 触摸 scoolview 屏幕 + 然后释放按钮时,它会触发 IBACTION。

任何人都可以帮助通知我的错误或更好的理解方式。

-(void)viewDidLoad

   [super viewDidLoad];
   [self pgcontrolview];


-(void) pgcontrolview  
   pageC.numberOfPages=8;
   pageC.currentPage=0;
   for (int i=1; i<=8; i++)
   
       UIImageView *images=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]]];
       images.frame=CGRectMake((i-1)*1024, 0, 1024, 760);
       [scroller addSubview:images];
   
   scroller.delegate=self;
   scroller.contentSize=CGSizeMake(1024*8, 760);
   scroller.pagingEnabled=YES;

   UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_Tap:)];
   tap.numberOfTapsRequired = 1;
   tap.numberOfTouchesRequired = 1;
   [self.view addGestureRecognizer:tap];


-(IBAction)clickprjinfo:(id)sender
   pageC.currentPage=1;
   CGRect frame=scroller.frame;
   frame.origin.x=0;//frame.size.width*page;
   frame.origin.y=0;
   [scroller scrollRectToVisible:frame animated:YES];

【问题讨论】:

【参考方案1】:

添加手势委托方法如下

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
// test if our control subview is on-screen
if ([touch.view isKindOfClass:[UIControl class]]) 
    // we touched a button, slider, or other UIControl
    return NO; // ignore the touch

return YES; // handle the touch

因为它考虑了 UIButton 点击​​作为 UITapGesture,所以你不需要允许 UIButton 上的 UITapGesture,因为上面的委托方法忽略了 UIControl 上的触摸(它反过来 UIButton)允许执行

-(IBAction)clickprjinfo:(id)sender操作

【讨论】:

你能不能多给点,我怎么用这个方法,你的意思是我必须替换方法“handle_Tap”或者在哪里调用这个方法。 在 .h 文件中,您需要将 UIGestureRecognizerDelegate 添加为 @interface DesignCordViewController : UIViewController UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_Tap:)]; tap.delegate = 自我; tap.numberOfTapsRequired = 1; tap.numberOfTouchesRequired = 1; [self.view addGestureRecognizer:tap]; "handle_Tap" 将用于处理手势识别器,其中 -(IBAction)clickprjinfo:(id)sender 用于 Barbuttonitem 操作 我必须在语句“[self.view addGestureRecognizer:tap]”之前添加“tap.delegate = self”。然后一切都很完美。

以上是关于IOS Toolbarbutton项目不触发带有滚动条的动作的主要内容,如果未能解决你的问题,请参考以下文章

.NET:锁定 ToolBarButton 而无需专门化该类

cellForItemAtIndexPath:在 iOS7 中触发,但在 iOS6 中不触发

TSQL:触发/回滚事务错误

带有 Spotify iOS SDK 的 Cordova iOS - 触发身份验证

iOS 共享扩展激活规则不应该用于 public.url 类型时触发

(转)spring异常抛出触发事务回滚策略