带有操作的文本字段在 iPad 上不起作用

Posted

技术标签:

【中文标题】带有操作的文本字段在 iPad 上不起作用【英文标题】:Text Field with an Action not working on iPad 【发布时间】:2012-08-15 04:29:43 【问题描述】:

我在我的文本字段中创建了一个按钮并调用了我的bookMarks 方法。这适用于iphone。如果我在工具栏中创建一个按钮并调用此方法,仍然可以正常工作。它只是在我的文本字段中不起作用。有没有办法解决这个问题?谢谢..

 [bookMarkButton addTarget:self action:@selector(bookMarks:) forControlEvents:UIControlEventTouchUpInside];

    locationField.leftView = bookMarkButton;

书签方法

- (void)bookMarks:(id)button 

    if (self.bookmarkPopoverController.popoverVisible) 
        [self.bookmarkPopoverController dismissPopoverAnimated:YES];
        self.bookmarkPopoverController = nil;
     else 
        ViewBookmarkViewController * viewBookmarkViewController = [[[ViewBookmarkViewController alloc] initWithStyle:UITableViewStyleGrouped] autorelease];
        viewBookmarkViewController.delegate = self;
        [viewBookmarkViewController setBookmark:[webView stringByEvaluatingjavascriptFromString:@"document.title"]
                                        url:self.url];
        UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewBookmarkViewController] autorelease];

        navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
            self.bookmarkPopoverController = [[[UIPopoverController alloc] initWithContentViewController:navController] autorelease];
            [self.bookmarkPopoverController presentPopoverFromBarButtonItem:button
                                                   permittedArrowDirections:UIPopoverArrowDirectionDown|UIPopoverArrowDirectionUp
                                                                   animated:YES];
         else 
            [self presentModalViewController:navController animated:YES];
        
    


【问题讨论】:

你是否放了断点或NSLog语句来查看你的UI_USER_INTERFACE_IDIOM()条件子句是否被调用? 是的..它在self.bookmarkPopoverController presentPopoverFromBarButtonItem:之后崩溃 我认为包含“它不起作用”或“它崩溃”的问题应该被销毁以摆脱他们的痛苦。你会告诉你的机械师“我的车坏了……为什么?”?不! 如果你不知道答案,你不必写东西..如果我知道它为什么不起作用,我会修复它.. 您不必知道为什么,但至少要提供一些信息...*它是如何*崩溃的?错误信息?不要只说“这块代码行不通” 【参考方案1】:

为什么不为 textField 添加 ControlEvent:

[yourTextField addTarget:self action:@selector(bookMarks:) forControlEvents:UIControlEventTouchUpInside];

编辑:要区分按钮,请将标记 0 和 1 分别添加到两个按钮;

现在你的方法是:

- (void)bookMarks:(id)sender 
 
  if([sender isKindOfClass:[UIButton class]]) 
  
   UIButton *curBtn = (UIButton *)sender
   if([curBtn tag] == 0)
   
     // any action for button 1
   
   else if([curBtn tag] == 1)
   
      //refresh uiWebView
   
  
 else
 
   //your code
   //present your popover for ipad
   [[self.bookmarkPopoverController presentPopoverFromRect:yourtextFeild.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown|UIPopoverArrowDirectionUp animated:YES];
 

【讨论】:

非常感谢.. 运行良好.. 只是一个问题.. 我的文本字段中有 2 个按钮.. 正确的一个用于刷新 UIWebView.. 如果我使用上面的代码,刷新按钮将作为书签按钮工作。如何区分按钮?

以上是关于带有操作的文本字段在 iPad 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 javascript 值的组合框在 iPad 上不起作用

CSS 跨浏览器问题 - 旋转在 Safari、Ipad 和 Iphone 上不起作用

滑动 jQuery 面板在 iPad 上不起作用

UIWebView 的 allowInlineMediaPlayback 属性在 iPad 上的 4.2 上不起作用

按钮在 ipad 模拟器上不起作用

UIPanGestureRecognizer 在 iPad 上不起作用?