jjzjj

IOS UIButton 不响应触摸,多次按下,UIScreenEdge 手势干扰?

coder 2024-01-20 原文

我展示了一系列模态视图,每个 View 都有一个顶部标题工具栏和右上角的 UIBarButtonItem,带有一个“X”图像,允许用户单击它以关闭 View 。

我遇到的问题是这些按钮经常不响应触摸,并且似乎需要轻按 5-10 次才能执行操作。我什至增加了按钮的图像大小以使区域更大,但没有帮助。然而,在模拟器中,单击鼠标指针,它们似乎可以立即正常工作。

我注意到的一件事是,主视图上似乎有一个我没有添加的 UIScreenEdgePanGestureRecognizer。我认为它是用于可以从顶部下拉的 Iphone 通知中心 handle 。底部也有一个。这些会干扰我的按钮吗?这些 Handlebars 总是对轻微的拖拽使用react。

我做了一个测试,将按钮放在屏幕中间,每次都能立即运行。虽然顶部和底部是工具栏和按钮的明显位置,但边缘手势识别器会导致这种冲突而不是让每个人都生气,这似乎很奇怪。

// The button, added as part of a standard toolbar on very top of screen
UIButton *closeButtonImage = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButtonImage setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)];
[closeButtonImage addTarget:self action:@selector(closeClick:) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:closeButtonImage];

最佳答案

取而代之的是:

[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)];

试试这个:

[closeButtonImage setFrame:CGRectMake(0, 0, 26, 26)];

原因:您要将按钮放在 UIBarButtonItem 中。这有点奇怪,因为条形按钮项本身 是一种按钮,但它没有任何问题。但是,放置其内容的位置取决于栏按钮项。如果将按钮放在包含栏按钮项的边界之外,它将变得不可点击。

不过,我真正的建议是不要做你正在做的事情。只需为 UIBarButtonItem 本身提供 close.png 图像作为其图像,并在条形按钮项目本身上设置操作。它已经是一个按钮。

关于IOS UIButton 不响应触摸,多次按下,UIScreenEdge 手势干扰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20942663/

有关IOS UIButton 不响应触摸,多次按下,UIScreenEdge 手势干扰?的更多相关文章

  1. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  4. ruby-on-rails - 多次选择一个随机数,但绝不会两次选择相同的随机数 - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIgeneratealistofnuniquerandomnumbersinRuby?我想做的事:Random.rand(0..10).timesdoputsRandom.rand(0..10)end但如果随机数已经显示过,则无法再次显示。如何最轻松地做到这一点?

  5. ruby-on-rails - Rails 在记录 200 OK 后在做什么? (调试响应时间慢) - 2

    我试图在我的RubyonRails应用程序中调试一个极其缓慢的请求调用。我已设法根据自己的喜好优化Controller方法,Rails的日志告诉我它已在XX毫秒内完成操作(Completed200OKin5049ms(Views:34.9ms|ActiveRecord:76.3ms)).但是,在加载页面时,在浏览器中实际呈现任何内容之前打印此消息很长;最多约15秒的等待时间。Rackmini-profiler证实了这一点,告诉我GET操作(不计算完成Controller操作所花费的时间)花费了14秒左右。(分析器还确认Controller操作的执行时间约为5秒)。我可以接受Contro

  6. ruby - 带有 header 的 Sinatra 流式响应 - 2

    我想通过Sinatra应用程序代理远程文件。这需要将带有header的HTTP响应从远程源流式传输回客户端,但我不知道如何在Net::HTTP#提供的block内使用流式API时设置响应header获取响应。例如,这不会设置响应头:get'/file'dostreamdo|out|uri=URI("http://manuals.info.apple.com/en/ipad_user_guide.pdf")Net::HTTP.get_response(uri)do|file|headers'Content-Type'=>file.header['Content-Type']file.re

  7. ruby - Net::HTTP 对 HTTPS 请求的响应极其缓慢 - 2

    出于某种原因,在我的开发机器上,我对通过Net::HTTP执行的HTTPS请求的响应非常非常慢。我试过RestClient和HTTParty,它们都有同样的问题。它似乎是凭空冒出来的。我已毫无问题地提出这些请求数百次,但今天它们的速度慢得令人难以忍受。pry(main)>putsTime.now;HTTParty.get('https://api.easypost.com/v2/addresses');putsTime.now;2015-04-2908:07:08-05002015-04-2908:09:39-0500如您所见,响应耗时2.5分钟。不仅仅是这个EasyPostAPIUR

  8. ruby - 使用 Ruby 将 HTTP GET 的响应主体流式传输到 HTTP POST - 2

    我正在尝试下载一个大文件,然后使用Ruby将该文件发布到REST端点。该文件可能非常大,即超过可以存储在内存中甚至磁盘上的临时文件中的容量。我一直在用Net::HTTP尝试这个,但我愿意接受任何其他库(rest-client等)的解决方案,只要他们做我想做的事情。这是我尝试过的:require'net/http'source_uri=URI("https://example.org/very_large_file")source_request=Net::HTTP::Get.new(source_uri)source_http=Net::HTTP.start(source_uri.ho

  9. 更新证书后,Ruby Net::HTTP 响应 OpenSSL::SSL::SSLError "certificate verify failed" - 2

    我们最近更新了我们网站的SSL证书,在MacOSElCapitan10.11.3上出现以下情况:require'net/http'Net::HTTP.getURI('https://www.google.com')#=>"..."#ThesitewhosecertificategotrenewedNet::HTTP.getURI('https://www.example.com')#=>OpenSSL::SSL::SSLError:SSL_connectreturned=1errno=0state=error:certificateverifyfailed我在Google和StackO

  10. ruby-on-rails - Rails Controller 中未定义的方法呈现 - 尝试使用 200 状态代码响应 Sendgrid - 2

    我正在使用SendgridParseAPI和Griddlergem来接受传入的电子邮件。在大多数情况下,这工作正常;但是,如果您未使用状态代码200响应Sendgrid,他们将假定该应用程序未正确接收POST请求并继续尝试进行POST3天。我正在尝试使用状态代码进行响应,但遇到了问题。在常规的RESTful路由中,您可以执行类似...render:status=>200但是,我认为这必须在Controller中完成才能识别渲染方法。Griddler建议您创建一个EmailProcessor模型并使用“处理”方法来处理电子邮件。据我了解,您不能在模型中使用渲染方法。因此,我使用类方法创建

随机推荐